打印
[开发工具]

请问IAR中子函数返回的问题

[复制链接]
3210|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
soiso|  楼主 | 2008-12-29 15:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    IAR条件下,在某函数中再调用子函数的时候,从反汇编窗口观察,进入子函数时有PUSH {R4,R5,R6,LR} 这样的指令,但在子函数执行完之后,反汇编窗口中只观察到了POP{R4,R5,R6} 并没有POP{LR} 和 BX LR这样的返回指令,可是程序执行完POP{R4,R5,R6}继续运行返回的地址是正确的,观察堆栈发现LR已经被弹出来了,我想请问一下到底是怎么弹出来的,机制是什么?
    是IAR优化的结果吗,可是我在优化的那栏里选的是不优化.
沙发
soiso|  楼主 | 2009-1-4 13:57 | 只看该作者

给大家上个图 希望知道的朋友说一下

https://bbs.21ic.com/upfiles/img/20091/200914135341465.jpg

使用特权

评论回复
板凳
computer00| | 2009-1-4 14:26 | 只看该作者

单步跟踪一下,对于子函数的调用并接下来是返回语句的,

编译器可以优化掉一次返回,直接返回到外层的调用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

41

帖子

0

粉丝