大家好、
我想报告一个使用 MSP430 Launchpad 套件时发现的问题。 我注意到 CPU 如何使用具有20位地址的绝对模式来正确识别 PUSHX.W 指令。 具体而言、使用指令"PUSHX[.W]&0x10000"、或者任何高于"0xFFF"的其他值、只需让 CPU 将值推入指定地址、同时其最重要的位被丢弃。 CPU 丢弃最重要的位、该位在扩展字中正确编码、并将其忽略。 "PUSHX[.W]&0x10000"将变为"PUSHX[.W]&0x0000"、"PUSHX[.W]&0x10010"将变为"PUSHX[.W]&0x0010"、"PUSHX[.W]&0x20333"将变为"PUSHX[.03W"。
值得注意的是、编译器正确区分了"PUSHX[.W]&0x10000"和"PUSHX[.W]&0x0000"、因为它使用扩展字来编码额外的位并使用不同的指令创建一个二进制代码、但是 CPU 对这两个指令没有做任何区分。
如果有人对此问题有解决方案、我会感谢您的任何反馈!