首页 > 解决方案 > ARM银行注册会冲突吗?

问题描述

阅读ARM 通用中断控制器第 4.1.4 节,它有以下解释:

注册银行是指在同一地址提供多个注册副本。寄存器访问的属性决定了寄存器的哪个副本被寻址。

我有点困惑at the same address。例如,如果R12 和R12_fiq 是同一个寄存器,处理器如何保证R12 中的原始数据在fiq 模式下不会被覆盖。有必要保证吗?

我在网上找了很久。但是没有用。所有相关的问题都对我没有帮助。

我认为 Benoit 在“注册登记簿是什么意思”中的回答是什么?是一种帮助,但我不确定。

提前致谢。

- - - - - - 更新 - - -

由于domen的回答, R8_usr 和 R8_fiq 是两个不同的寄存器。抱歉,我不知道如何投票给他。而且我还注意到,在 ensc 的回答中提到了“专用”一词,也许他知道它们是不同的。但由于我描述不佳,他没有强调这一点。

标签: armcpu-registers

解决方案


“GIC”并R12没有很多共同点。GIC 是一个控制器(由一些,但不是每个 ARM CPU 使用),可以通过内存地址访问。根据安全模式和/或 cpu 节点,相同的地址可以提供不同内部寄存器的视图。

R12是一个 CPU 寄存器。由于效率原因(例如,为了避免在离开 FIQ 时恢复其先前的值),FIQ 模式有一个专用的高位寄存器组(r8- r15)。

堆栈指针 ( r13) 和lr( r14) 也可以存储起来,以便例如 IRQ 模式可以拥有自己的堆栈或发出某些状态的信号lr(例如堆栈对齐)。


推荐阅读