为什么PIC18要用21位addr2line pc指针针

21ic官方微信
后使用快捷导航没有帐号?
查看: 432|回复: 3
程序在调用子程序的时候为什么pc指针也要入栈?
&&未结帖(10)
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
本帖最后由 想把我唱给你听 于
20:27 编辑
比如说一个子程序:
void test(int a , int b)
& & ..........
& & ..........
反汇编后应该是:
mov& &&&ip, sp& && && && && && &//IP=SP;保存SP
stmdb& &sp!, {fp, ip, lr, pc}& &//先对SP减4,再对fp,ip,lr,pc压栈。(这里的pc指针入栈后面没用到,如果不入栈可以吗?为什么?)
sub& &&&fp, ip, #4& && &; 0x4& &//fp=ip-4;此时fp指向栈里面的“pc”
..........
..........(参数入栈)
..........(局部变量入栈)
..........
sub& &&&sp, fp, #12& &&&; 0xc& &//sp=fp-12;此时sp指向栈里面的lr
ldmia& &sp, {fp, sp, pc}& && &&&//弹栈pc=lr,sp=ip,fp=fp。然后地址加4---------1
主题帖子积分
助理工程师, 积分 1850, 距离下一级还需 150 积分
助理工程师, 积分 1850, 距离下一级还需 150 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1850, 距离下一级还需 150 积分
助理工程师, 积分 1850, 距离下一级还需 150 积分
好像没有必要PC入栈啊
主题帖子积分
技术总监, 积分 38212, 距离下一级还需 11788 积分
技术总监, 积分 38212, 距离下一级还需 11788 积分
主题帖子积分
专家等级:结帖率:3%
主题帖子积分
技术总监, 积分 38212, 距离下一级还需 11788 积分
技术总监, 积分 38212, 距离下一级还需 11788 积分
中间调用了子程序就要入栈
再说这样入栈,返回时效率高
主题帖子积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 9, 距离下一级还需 41 积分
实习生, 积分 9, 距离下一级还需 41 积分
本帖最后由 alphalovelife 于
00:55 编辑
同求,貌似可以不入pc。
还有第二条sp减了16,倒数第二条sp指向&fp&?
欢快之小溪
发帖类勋章
时间类勋章
技术导师奖章
人才类勋章
社区建设奖章
等级类勋章
荣誉元老奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
热门推荐 /2浏览:826次
评论:0条 &时间:
1系统硬件设计美国MicrochipTechnology公司推出的PIC16F87X中档系列单片机,片内含有A..}

我要回帖

更多关于 stm32 pc指针 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信