[开发工具] 请问IAR中子函数返回的问题

[复制链接]
3971|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

粉丝
快速回复 在线客服 返回列表 返回顶部