0

我正在研究 MSP430 微控制器,并且正在研究它的架构。在用户指南中,在其功能选项卡下,有这样的语句 - “完整的寄存器访问,包括程序计数器 (PC)、状态寄存器 (SR) 和堆栈指针 (SP) ”。我的印象是,无论架构如何,CPU 总是可以访问所有寄存器。

我对声明的理解可能是错误的。谁能解释一下这到底是什么意思?

4

1 回答 1

1

根据维基百科页面

处理器包含 16 个 16 位寄存器,其中 4 个专用于特殊用途:R0 是程序计数器,R1 是堆栈指针,R2 是状态寄存器,R3 是一个称为常量发生器的特殊寄存器,提供对6 个常用的常量值,无需额外的操作数。R3 总是读为 0 并且写入它被忽略。R4 到 R15 可用于一般用途。

换句话说,在这种情况下,“完全访问”意味着不仅使用jmp-type 指令能够跳转到新位置,而且还允许xor r0, #1234直接(并且可能是致命地)修改程序计数器。

其他特殊寄存器同上,除了R3常量生成器和报价中未提及的四个寄存器中的唯一一个。虽然所有指令都可以对该寄存器进行操作,但它会忽略写入并在读取时生成各种固定值(-1..2使用 ofR2也可以为您提供4and 8),具体取决于所使用的寻址模式。


这可能看起来有点奇怪,但这不是我见过的最奇怪的。为此您必须研究 RCA1802A CPU,它与 MPS430 一样具有用于特定功能的“通用”寄存器,但您实际上可以在运行时选择程序计数器或堆栈指针。它实际上没有callorret指令,而是使用标准调用和返回技术 (SCRT) 来模拟它。

于 2015-01-21T03:38:18.690 回答