不能下载附件的请看这里:论坛限制流量,临时解决方法
返回列表 回复 发帖

请教关于嵌套的问题

书里提到以下内容:
调用层次的控制
    中档系列 PIC 单片机的硬件堆栈深度为8 级,考虑中断响应需占用一级堆栈,所
有函数调用嵌套的最大深度不要超过7 级。编程员必须自己控制子程序调用时的嵌套深
度以符合这一限制要求。
   PICC 在最后编译连接成功后可以生成一个连接定位映射文件(*.map),在此文件
中有详细的函数调用嵌套指示图“call graph”,建议大家要留意一下。其信息大致如下
(取自于一示范程序的编译结果):
Call graph:
*_main size 0,0 offset 0
_RightShift_C
* _Task size 0,1 offset 0
lwtoft
ftmul size 0,0 offset 0
ftunpack1
ftunpack2
ftadd size 0,0 offset 0
ftunpack1
ftunpack2
ftdenorm
   但是我在PICC18生成的*.map文件没有看到这些信息,请问,PICC18应该怎么看?
社区口号:开发路上不能单打独斗,帮助需要帮助的人,是对帮助过你的人最大的感谢!
本帖最后由 sunsea2002 于 2010-2-4 09:55 编辑

已找到PICC18生成的*.map,以前都不注意就是看不懂意思,那位高手指点一下,谢谢了
*_mai size 0,0 offset 0
       _SET_A  size 0,0 offset 6
               _GET_B  size 2,0 offset 6
                      _floor size 3,8 offset 22
                            _frexp size 5,1 offset 33
                            ftcmp size 0,0 offset 33
                            fttol size 0,0 offset 33
                                   ftunpack1 size 0,0 offset 35
                                   10neg size0,0 offset 33

最好给我大致解释一下这些是什么意思,从那里看出来调用嵌套函数的层数?“_GET_B size2,0 offset 6”是什么意思,谢谢了,急!
社区口号:开发路上不能单打独斗,帮助需要帮助的人,是对帮助过你的人最大的感谢!
呵呵,不用那么麻烦,你直接在MPLAB IDE中,选VIEW/CALL STACK,在你认为最深的调用语句那里设个断点,运行一下程序,就知道用了几层堆栈了!18系列的很多片子都是31级堆栈哦,一般是用不完的!
开发路上不能单打独斗,畅所欲言, 同舟共济!
精英官方站点:www.mcubbs.com
返回列表