我正在研究MSP430微控制器,并正在研究其架构。在用户指南中,在其功能选项卡下,有一个这样的语句 - &#34; 完整的寄存器访问,包括程序计数器(PC),状态寄存器(SR)和堆栈指针(SP)< / EM> &#34 ;.我的印象是,无论架构如何,CPU总是可以访问所有寄存器。
我对该陈述的理解可能是错误的。谁能解释一下这究竟意味着什么?
答案 0 :(得分:1)
处理器包含16个16位寄存器,其中4个专用于特殊用途:R0是程序计数器,R1是堆栈指针,R2是状态寄存器,R3是一个称为常数发生器的特殊寄存器,提供对6个常用常量值的访问,而无需额外的操作数。 R3始终读为0并且忽略写入。 R4至R15可供一般使用。
换句话说,&#34;完全访问&#34;在这种情况下,不仅意味着使用jmp
- 类型指令才能跳转到新位置,还允许xor r0, #1234
之类的东西直接(并且可能致命地)修改程序计数器。
同样适用于除R3
之外的其他特殊寄存器,常量生成器以及引用中未提及的四个中唯一的一个。虽然所有指令都可以在该寄存器上操作,但它会忽略写入并在读取时生成各种固定值(-1..2
,使用R2
也可以为您提供4
和8
)取决于使用的寻址模式。
这看起来有点奇怪,但它并不是我见过的最奇怪的事。对于,你必须调查RCA1802A CPU,就像MPS430具有&#34;通用目的&#34;注册特定的函数,但实际上你可以在运行时选择,它应该是程序计数器或堆栈指针。它实际上有没有call
或ret
指令,而是使用标准调用和返回技术(SCRT)来模拟它。