我对程序计数器 (R0) 和堆栈指针 (R1) 在内存映射中的位置感到很困惑。我认为它们在 CPU 内部,因此内存映射中没有任何位置显示这些寄存器。但我的 friend 坚持认为它们位于特殊功能寄存器 (SFR),即它们位于内存映射的底部。哪个是正确答案?
最佳答案
寄存器 R0 和 R1(以及所有其他通用寄存器)驻留在 CPU 中,并使用使用“寄存器模式”作为操作数的指令进行访问。它们不是内存映射的。
特殊功能寄存器在您正在使用的 MSP430 变体的设备特定数据表中定义。 SFR 通常包括直接影响 CPU 执行的设备(例如 NMI、振荡器故障等和第一个串行端口)的中断使能位和中断标志位,但通常不包括其他通用外设。
例如,请参阅《MSP430x2xx 系列用户指南》中的“图 3-1:CPU 框图”,SAU144H .寄存器显示为 CPU 的一部分。
另请参阅 MSP430F2619-HT device specific datasheet 的第 14 页作为示例其中显示了特殊功能寄存器。没有提到通用寄存器。
关于memory - 内存映射中的 R0 和 R1 寄存器在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8606826/