完全注册访问意义

时间:2014-10-14 16:20:57

标签: embedded cpu cpu-registers msp430 status-register

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

我对该陈述的理解可能是错误的。谁能解释一下这究竟意味着什么?

1 个答案:

答案 0 :(得分:1)

根据the wikipedia page

  

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

换句话说,&#34;完全访问&#34;在这种情况下,不仅意味着使用jmp - 类型指令才能跳转到新位置,还允许xor r0, #1234之类的东西直接(并且可能致命地)修改程序计数器。

同样适用于除R3之外的其他特殊寄存器,常量生成器以及引用中未提及的四个中唯一的一个。虽然所有指令都可以在该寄存器上操作,但它会忽略写入并在读取时生成各种固定值(-1..2,使用R2也可以为您提供48)取决于使用的寻址模式。


这看起来有点奇怪,但它并不是我见过的最奇怪的事。对于你必须调查RCA1802A CPU,就像MPS430具有&#34;通用目的&#34;注册特定的函数,但实际上你可以在运行时选择,它应该是程序计数器或堆栈指针。它实际上没有callret指令,而是使用标准调用和返回技术(SCRT)来模拟它。