访问 AArch32 中的银行化寄存器

Access Banked Registers in AArch32

我想知道如何访问分组寄存器,例如 sp_irq、sp_fiq 等

ARM v8 ARM 描述描述了 MRS/MSR 指令的编码,允许程序员直接访问这些寄存器,但由于某些原因 MSR sp_irq, r0 无法编译,因为无法识别寄存器名称.

是否缺少某些编译器选项,是我使用了错误的语法,还是我正在做的事情根本不可能?

由于问题没有说明CPU模式(32/64),也没有具体的编译器,所以我会根据我的经验尝试回答:

AARCH32: 这可能是 upper/lower 个案例问题。尝试使用 SP_irq、sp_IRQ、SP_IRQ 等组合。由于这个 upper/lower 案例问题,我在 GCC 上遇到了问题。

AARCH64: 64 位 GP 寄存器直接映射到 32 位寄存器。 ARM V8 Architecture Reference ManualRegister mappings between AArch32 state and AArch64 state中有解释。

例如。 SP_irq <==> X17

希望这对您有所帮助。