41

阅读 Wikipedia 上的“ARM Architecture”,发现以下语句:

寄存器 R0-R7 在所有 CPU 模式下都是相同的;他们从来没有银行。

R13 和 R14 在除系统模式之外的所有特权 CPU 模式中存储。

银行注册是什么意思?

4

3 回答 3

30

注册银行是指在同一地址提供多个注册副本。

取自 arm docs的第 1.4.6 节

该术语是指无法同时看到所有寄存器的问题的解决方案。

每种处理器模式都有不同的寄存器组。分组寄存器为处理处理器异常和特权操作提供了快速的上下文切换。

如果您正在寻找更理论的推理,我推荐这篇论文。编辑:这里
给出了比我更深刻的答案

于 2012-11-17T16:12:53.993 回答
16

当处理器进入异常时,组中的寄存器会自动与另一组这些寄存器进行切换。

实际上,异常处理程序例程不必将这些寄存器保存在堆栈上,以防止它们稍后被破坏(由异常处理程序函数)。处理器只保留该集合的安全副本;并将在异常返回时恢复原始集。

于 2014-02-14T17:34:00.540 回答
1

这个剪辑很好地解释了它 https://youtu.be/7LqPJGnBPMM?t=1419

分组寄存器是当前执行模式不需要且可访问的寄存器。当执行模式改变时,新模式所需的寄存器将变得可用。

于 2020-08-19T09:09:14.447 回答