搜索

[PIC®/AVR® MCU] AVR调用子函数时堆栈指针SP压入堆栈的为什么不是PC+2或者PC+2?

[复制链接]
809|3
bluefancy|  楼主 | 2021-5-12 16:58 | 显示全部楼层 |阅读模式
本帖最后由 bluefancy 于 2021-5-12 17:00 编辑

      我用的是AVR的XMEGA128A1,观察C程序编译器生成的汇编指令和寄存器内容时发现调用子函数时
压入堆栈的似乎并不是PC+1或者PC+2,奇怪子函数调用时压入堆栈的到底是什么?

谢谢!谢谢!
avr2.jpg
avr1.jpg

使用特权

评论回复
antusheng| | 2021-5-15 21:26 | 显示全部楼层
很少调试汇编。

使用特权

评论回复
lcczg| | 2021-5-17 15:42 | 显示全部楼层
本帖最后由 lcczg 于 2021-5-17 15:55 编辑

压入堆栈的应该是PC+2,我用Microchip Stuido运行时正确的。不知你的IAR为何有问题,你运行下,看RET返回的时候如何执行。参考AVR指令集137页 RCALL :The return address (the instruction after the RCALL) is stored onto the Stack。
http://ww1.microchip.com/downloa ... tion-set-manual.pdf

使用特权

评论回复
奔波儿熊| | 2021-5-17 18:28 | 显示全部楼层
很奇怪,难道是IAR比较特殊,试了一下,MPLAB里确实没问题

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

本版热帖

本版活跃用户

优质原创写原创,赢大奖

编辑推荐

  • 1 kk的回忆 得到打赏 ¥600.00
  • 2 天意无罪 得到打赏 ¥312.00
  • 3 wolfe_yu 得到打赏 ¥210.00
  • 4 呐咯密密 得到打赏 ¥170.00
  • 5 最美葫芦娃 得到打赏 ¥155.00
  • 6 gaoyang9992006 得到打赏 ¥120.00
  • 7 hunteredward 得到打赏 ¥90.00
  • 8 blust5 得到打赏 ¥85.00
  • 9 hk386 得到打赏 ¥80.00
  • 10 yangjiaxu 得到打赏 ¥75.00
在线客服 快速回复 返回顶部 返回列表