阅读 Wikipedia 上的“ARM Architecture”,发现以下语句:
寄存器 R0-R7 在所有 CPU 模式下都是相同的;他们从来没有银行。
R13 和 R14 在除系统模式之外的所有特权 CPU 模式中存储。
银行注册是什么意思?
注册银行是指在同一地址提供多个注册副本。
取自 arm docs的第 1.4.6 节
该术语是指无法同时看到所有寄存器的问题的解决方案。
每种处理器模式都有不同的寄存器组。分组寄存器为处理处理器异常和特权操作提供了快速的上下文切换。
当处理器进入异常时,组中的寄存器会自动与另一组这些寄存器进行切换。
实际上,异常处理程序例程不必将这些寄存器保存在堆栈上,以防止它们稍后被破坏(由异常处理程序函数)。处理器只保留该集合的安全副本;并将在异常返回时恢复原始集。
这个剪辑很好地解释了它 https://youtu.be/7LqPJGnBPMM?t=1419
分组寄存器是当前执行模式不需要且可访问的寄存器。当执行模式改变时,新模式所需的寄存器将变得可用。