打印

arm退出中断求教

[复制链接]
1459|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
denghaibo|  楼主 | 2012-2-7 20:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ARM, ps, pc
各高手,请问,ARM退出中断的过程?
比如说从IRQ中退出时,是先把中断模式里的SPSR恢复到CPSR,再把LR送给PC,再出栈R0~R4,LR等吗?
还是先出栈R0~R4,LR,再把中断模式里的SPSR恢复到CPSR,再把LR送给PC返回呢?

这里有个问题,当恢复了CPSR后,中断模式的LR,SP什么的就不能访问了,还怎么出栈或者把LR送给PC来返回中断前呢?

相关帖子

沙发
xinzha| | 2012-2-7 21:16 | 只看该作者
从过程上来说是先把栈内的内容恢复到相应寄存器,然后将lr拷贝到pc,而此时spsr到cpsr的恢复是隐式并且并行的,并不需要有显示的指令做这件事,arm指令中有一部分就是会同时将spsr恢复到cpsr中,去参考arm手册或者一些讲汇编指令的书里面有解释。

使用特权

评论回复
板凳
denghaibo|  楼主 | 2012-2-7 22:23 | 只看该作者
十分感谢,查了许多网站,又看了下ADS的反汇编,正如您所言.只是在AXD调试时,单步退出中断时,一步就退出去了,实际在反汇编后包含三条汇编指令,正是您说的这样执行的. 2# xinzha

使用特权

评论回复
地板
denghaibo|  楼主 | 2012-2-7 22:24 | 只看该作者
连我自己都觉得我问的有点乱,你竟然说到我心坎里去了,真佩服. 2# xinzha

使用特权

评论回复
5
xinzha| | 2012-2-8 09:03 | 只看该作者
我也是从不懂做过来的,所以大致可以猜到你想说什么。

使用特权

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

本版积分规则

3

主题

49

帖子

1

粉丝