[ZLG-ARM] 关于中断异常函数中的R0-R3

[复制链接]
2873|5
 楼主| cbqcgq 发表于 2007-7-19 15:35 | 显示全部楼层 |阅读模式
ATPCS里面是不是规定,R0-R3用做现场保护?普通的函数调用,这样理解起来不复杂&nbsp;,如果是进入中断服务程序,那么根据资料,需要在进入中断的时候,保存R0-R3,LR.<br />问题是,产生中断,模式改变了,比如IRQ中断,其中的R0-R3的值是不是自动由被中断的模式传递过来的值&nbsp;?<br />我只知道异常发生时,CPSR,PC是会由硬件自动保存,R0-R3就不知道了。<br /><br /><br /><br />
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入栈,肯定是因为他们有特别的用途

  
ayb_ice 发表于 2007-7-20 08:26 | 显示全部楼层

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

  
bqt 发表于 2007-7-20 13:49 | 显示全部楼层

re:

R0~R3、R12是ATPCS(ARM-Thumb&nbsp;Procedure&nbsp;Call&nbsp;Standard&nbsp;corruptible&nbsp;registers)寄存器。<br />编译器会直接使用这些寄存器,而不会保存它们。<br />在中断中如果调用函数则必须保存这些寄存器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

53

帖子

1

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