填坑*** WARNING L15: MULTIPLE CALL TO SEGMENT

填坑*** WARNING L15: MULTIPLE CALL TO SEGMENT

警告:发生了重入!

解释:在主循环里调用了一个函数,而在中断服务中又一次调用了同样的函数。当主循环运行到该函数中时,一旦产生中断,则在中断里又再次调用该函数,使得该子函数发生了重入。这时,尽管概率很低,但是很可能出错!这样,编译器就给出了警告-发生了重入!

可能引起程序冲突,假设你用于自动化领域,则可能导致信号产生尖峰。避免这种情况的方法:在进中断的时候置需调用该函数的标志,而在主循环中调用该函数。

一.用reentrant使函数重入  
1.重入函数不能传递bit类型的参数和变量; 
2.重入函数建立的是模拟堆栈区,所以不使用一般函数位于存储模式默认空间的可覆盖式堆栈,而是在同一空间从顶端另行分配一个非覆盖式的重入堆栈。 
     small    默认空间是 data; 
     compact 默认空间是 pdata; 
     large     默认空间是 xdata; 
3.由于要保存参数和局部变量,所以会消耗很大的栈空间;尽量少用这种模式; 
4.在同一程序中可以定义和使用不同存储器模式的重入函数,任意模式的重入函数不能调用不同存储器模式的重入函数,但可以调用普通函数。 
5.实际参数可以传递给间接调用的重入函数。无重入属性的间接调用函数不能包含调用参数。 
二.如果空间多的话,可以定义两个同功能的函数,分别在中断和中断外调用

三.主程序调用该函数时禁止中断。

可以在该函数被调用时用#pragma disable语句来实现禁止中断的目的。

必须使用OVERLAY指令将该函数从覆盖分析中除去。

也可以用EA=1,EA=0来开关中断

时间: 2024-12-29 11:49:19

填坑*** WARNING L15: MULTIPLE CALL TO SEGMENT的相关文章

初涉node.js做微信测试公众号一路填坑顺便发现个有趣的其他漏洞

[微信测试公众号] 半年前耍着玩搭起来的“微信简历”,是LAMP版的,很皮毛. 微信的官方文档在这 http://mp.weixin.qq.com/wiki/index.php 1.获取access token 2.自定义菜单创建,直接在调试工具上做了 http://mp.weixin.qq.com/debug 3.接入指南(接入自己的网站) 4.接收微信消息,判断消息类型,判断消息关键字(比如来自哪个按钮),响应消息 这里有个小坑,不同类型的消息数据结构略有不同,判空最好做细致点. [V2.0

bootstrap-table填坑之旅

应公司需求,改版公司ERP的数据显示样式.由于前期开发的样式是bootstrap,所以选bootstrap-table理所当然(也是因为看了bootstrap-table官网的example功能强大,样式清爽). 然后... ... 开启bootstrap-table填坑之旅. 开始就扒本园的资源,确实有不少bootstrap-table的文章.确实写的不错很详细,请恕本菜实在菜了点,看了半天demo的页面都没弄出来(勿吐槽~~).终于11点了.. .. 于是决定跟着官网的小白教程一点点的玩.

Elasticsearch 填坑记

前言 技术的发展日新月异,传统企业数据库Oracle.SqlServer.DB2,Mysql等在今日不断的被各种大厂自研数据库取代,当然也有类似Elasticsearch等优秀的满足海量数据所使用的开源数据库. 我司多个日志审计与态势感知项目中,也没有免俗,选择了Elasticsearch作为我们的日志存储与搜索引擎.关于Elasticsearch基础知识就不做更多介绍了,随便搜索下,有大量的介绍和使用文档. 本文主要介绍我们在多个项目中,使用Elasticsearch过程中,各种填坑记录. 在

一名Android开发者的微信小程序填坑之路(2)

前言 上一篇是九月二十七日写的,而这一篇我动笔的时间是十月十日(特殊的日子),中间相隔十三天--当然是因为国庆节.说老实话,这十三天里面我都没有碰和小程序有关的东西--毕竟学习小程序的开发也只是起于兴趣,而平时的工作并不会涉及与其相关的东西--但是在这十三天里,我能明显的感受到小程序热正在逐渐的消退,或者说大家正在逐渐以一种较为平和的姿态接受它的存在,其实这是一件好事.期待公测的到来. 接下来我就直接进入正题了,另外,文末我想和大家分享一下我的国庆节. PS:这篇文章是接着上一篇文章 一名And

【结果很简单,过程很艰辛】记阿里云Ons消息队列服务填坑过程

Maybe 这个问题很简单,因为解决方法是非常简单,但填坑过程会把人逼疯,在阿里云ONS工作人员.同事和朋友的协助下,经过一天的调试和瞎捣鼓,终于解决了这个坑,把问题记下来,也许更多人在碰到类似问题的时候,会开放思路.当然不得不说,Ons的.NET接口还很不完善,甚至没有独立在Windos 2008/2012服务器测试过,希望官方加把力. 1.阿里云ONS介绍 ONS(Open Notification Service)即开放消息服务,是基于阿里开源消息中间件MetaQ(RocketMQ)打造的

LCT 填坑系列

清华冬令营 T1用了LCT 这个东西以前有写过 然而并不熟练 发现没了板子根本就不会写 只能填一填坑辣 BZOJ 2843 LCT 1 #include <bits/stdc++.h> 2 #define N 30010 3 #define ls c[x][0] 4 #define rs c[x][1] 5 using namespace std; 6 7 inline int read() 8 { 9 int x=0,f=1; char ch=getchar(); 10 while(ch&l

[临时向]蒟蒻的填坑记录

TAT这周开始填坑....这周大概是数据结构吧?来这里记录一下免得自己过几天又开始颓了TAT 1.3:中午看了下zkw线段树,写了bzoj3685...找前驱后缀的姿势不是很科学...不过速度相差不大就懒得改了. 晚上写treap..分别用zkw线段树和treap写了bzoj3224普通平衡树.....正常的treap大概300+ms...zkw线段树190+ms 1.4:中午用treap写了1503郁闷的出纳员....晚上写1058报表统计..弄了一晚上TAT 目测明天重开spaly...

移动端web开发填坑指南之——百分比的过错

在移动端开发中,特别是在安卓的微信端进行开发的时候会遇到各种奇奇怪怪的坑.慢慢写慢慢填坑. 今天遇到的是,移动端中对一个div指定了height:100%;之后在安卓微信浏览器端遇到当input调起软键盘之后整个页面布局被重新resize后压扁,而ios则不会遇到这个问题. 通过实验,发现用通过js获取当前可是窗口高度后再对该div进行赋值之后,此时在安卓调起软键盘就不会出现这样的问题. 可见时对高度进行百分比设置的错.因为100%导致整个页面在软键盘弹出后进行了重新的resize操作. 做一个

css 填坑常用代码分享

以下是常用的代码收集,没有任何技术含量,只是填坑的积累.转载请注明出处,谢谢. /*强制不换行*/ white-space:nowrap; /*自动换行*/ word-wrap: break-word; word-break: normal; /*强制英文单词断行*/ word-break:break-all; 2. 两端对齐 text-align:justify;text-justify:inter-ideogra 3. 去掉Webkit(chrome)浏览器中input(文本框)或texta