打印
[ZLG-ARM]

关于中断异常函数中的R0-R3

[复制链接]
2108|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cbqcgq|  楼主 | 2007-7-19 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ATPCS里面是不是规定,R0-R3用做现场保护?普通的函数调用,这样理解起来不复杂 ,如果是进入中断服务程序,那么根据资料,需要在进入中断的时候,保存R0-R3,LR.
问题是,产生中断,模式改变了,比如IRQ中断,其中的R0-R3的值是不是自动由被中断的模式传递过来的值 ?
我只知道异常发生时,CPSR,PC是会由硬件自动保存,R0-R3就不知道了。



相关帖子

沙发
bqt| | 2007-7-19 15:47 | 只看该作者

re:硬件不会自动保存R0-R3

使用特权

评论回复
板凳
cbqcgq|  楼主 | 2007-7-19 17:49 | 只看该作者

那么中断模式下的R0-R3有什么特别的用途吗

使用特权

评论回复
地板
cbqcgq|  楼主 | 2007-7-19 17:56 | 只看该作者

我想进入中断就把R0-R3入栈,肯定是因为他们有特别的用途

使用特权

评论回复
5
ayb_ice| | 2007-7-20 08:26 | 只看该作者

所有模式的R0-R7都是相同的,你说要不要保存....

使用特权

评论回复
6
bqt| | 2007-7-20 13:49 | 只看该作者

re:

R0~R3、R12是ATPCS(ARM-Thumb Procedure Call Standard corruptible registers)寄存器。
编译器会直接使用这些寄存器,而不会保存它们。
在中断中如果调用函数则必须保存这些寄存器。

使用特权

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

本版积分规则

10

主题

53

帖子

1

粉丝