This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430F2618:对于 CLRX 仿真指令(MOVX)的源寻址模式的混淆。

Guru**** 2390755 points
Other Parts Discussed in Thread: MSP430F2618

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1274703/msp430f2618-confusion-about-source-addressing-mode-for-clrx-emulated-instruction-movx

器件型号:MSP430F2618

我尝试CLRX(.B,.A) dst在 MSP430F2618微控制器(UC)上执行命令时了解编译器的行为。
具体来说、我将尝试掌握扩展指令的寻址模式。

我对源寻址模式感到困惑。 我预计它将处于立即寻址模式、但编译器似乎将其视为处于寄存器寻址模式。 这很复杂、尤其是当我正确解释手册时。

根据 MSP430F2618设计手册、CLRX(.B,.A) dst是一个模拟指令并被转换为MOVX(.B,.A) #0,dst。 因此,应将其编译为MOVX

我查阅了 dis430生成的 asm 文件、实际上、我发现了预期的扩展 MOV 指令:

01182c: 0018 CLRX.A 0x00000(SP)
01182e: C143
011830: 0000

该指令使用三个字。 计算字节序,0018转换为1800、和C14343C1

这里、43C1表示 asflag = 0adFlag=1asflag值0表示非扩展指令和扩展指令的寄存器寻址模式。 这是我的困惑所在。 根据不使用430生成的文件、它应该处于立即寻址模式。

MSP430F2618系列用户指南(第4章专门介绍扩展指令 CPUx)提供了以下原理图:



基于此原理图,对于扩展指令,立即源寻址模式具有asFlag = 0b11。 同时、asFlag=0表示寄存器源寻址模式。

谢谢你。


 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    寄存器 R2和 R3不存在、引用它们的指令正在使用常量发生器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的帮助。 你是对的。 谢谢你。

    msp430f2618设计手册"4.3.4常数发生器寄存器(CG1和 CG2)"部分中介绍了常数发生器。
    我们的指令有 asFlag =0,R3 => 常量0。 (请参阅下面的方案)。


    谢谢!