CPU 通用寄存器通常是内存映射的吗?

Are CPU general purpose registers usually memory mapped?

我对内存映射和内存映射感到困惑I/O。 通用寄存器,例如ARM架构中的r0、r1等,一般是内存映射的吗?

不,这些寄存器在实际的 CPU 中(或 CPU 多核 CPU 内核)。您不能通过加载或存储到任何内存地址来访问它们。

内存映射寄存器是您通过地址或指针(在具有指针的语言中)访问的东西。 I/O 设备通常具有内存映射寄存器,您可以在其中写入或读取特定地址以设置或获取信息或数据。换句话说,它们就像任何其他内存(例如 RAM)一样被访问。


如评论中所述,do 存在 CPU 内存映射 CPU 寄存器。它们几乎都是在 1970 年代设计的,现在已成为历史的一部分。如今,您遇到带有内存映射寄存器的主流 CPU(不是微控制器)的可能性很小到 none。

一些微控制器架构仍然使用内存映射寄存器,包括旧设计,如 8051, and even some more recent designs like PIC microcontrolers and AVR(具有 32 个 8 位寄存器的 8 位 RISC)。 AVR MCU 至少有 128 字节的内部 SRAM,其中低 32 字节也是寄存器文件。

专门针对 ARM,ARM 体系结构没有 具有内存映射CPU 寄存器。外围设备,包括与 CPU 位于同一 SoC 上的外围设备,是另一回事:I/O 寄存器根本不是一回事,因为它们也不能通过寄存器号作为操作数访问对于加载或存储以外的指令。 (甚至不在核心 运行 您的说明中。)