memory - 内存映射中的 R0 和 R1 寄存器在哪里?

标签 memory memory-management msp430 msp

我对程序计数器 (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/

相关文章:

Java 内存泄漏迹象

python - python中的子进程内存使用

c - 如何使用valgrind检测自定义alloc/free的内存泄漏?

c++ - 编译时判断对象是否有自动存储时长的方法

floating-point - 将带符号的单精度 float 舍入到最接近的整数的有效方法是什么?

c - 用 C 中断

Android 内存类型(RAM v 内部存储器)

memory - 每个内核都有自己的私有(private)寄存器集吗?

python - 我们如何将 "left outer join"用于大尺寸 pandas 数据帧(大于 5~20GB)?

c++ - 从 C 编译器更改为 C++ 编译器会导致 MSP430 固件出现编译器错误