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.

[参考译文] CCS/MSP430FR5739:来自汇编器的奇怪输出

Guru**** 2604225 points
Other Parts Discussed in Thread: MSP430FR5739

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/629933/ccs-msp430fr5739-strange-output-from-assembler

部件号:MSP430FR5739

工具/软件:Code Composer Studio

为了更好地理解430汇编程序指令,我创建了一个简单的ASM文件,其中包含许多寻址模式和大多数指令。

----------------------------------
.def重置 ;将程序入口点导出到
;使链接程序知道它。
----------------------------------
文本 ;组装到程序存储器中。
保留 ;覆盖ELF条件链接
;并保留当前部分。
保留参考 ;并保留具有的任何部分
;对当前节的引用。

----------------------------------
Uno 二氧化碳0x211


背标签 二氧化碳$
重置
RRC R4
RRC-B R4
RRC 25(R4)
RRC-b 25(R4)
RRC @R4
rc.b @R4
RRC @R4+
rrc.b @R4+

...

令我惊讶的是,该商品显示的操作代码似乎与这些说明不符:

2400万 0054 RRC R4
2500.0002万 1044 RRC-B R4
2600.0004万 1014 RRC 25(R4)
0.0006万 0019
2700.0008万 1054 RRC-b 25(R4)
0万a 0019
2800000c RRC @R4
2900000e 1064 rc.b @R4
3000.001万 1034 RRC @R4+
3100.0012万 1074 rrc.b @R4+

我怀疑第一个指令RRC R4似乎不正确:'byte'位已设置,根据指令集表,第一个字节应该为10 (1004而不是0054)。

有人能告诉我我错了吗?

(我还使用Python MSP430工具模块进行编译,其中生成的二进制代码是正确的)

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

    Opcode 0054将使其成为MSP430X“扩展指令”。 在这种情况下,它将是RRCM。W 此指令没有'byte'位。 在这种情况下,它将是"RRCM.W #1, R4"。 事实上,独立的反汇编程序使用此格式反汇编指令。 如果您使用--silit_version=msp选项(而不是mspx)组装了此程序,您将获得所需的操作码1004。 但是,对于mspx,似乎汇编程序选择了具有不同编码的等效指令。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很感谢他们提供的信息-它确实解决了问题!

    建议:如果此特定选项位于常规处理器选项(我建议这是一个逻辑位置)上,我不会浪费太多时间(可能称之为--instruction-set而不是--silics_version)。 正如您所预测的那样,该值已设置为mspx,但这不是我所做的...

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

    常规处理器设置之一是器件变体,例如 MSP430FR5739。  此设置反过来会使CCS自动选择其他几个项目设置。  其中包括编译器选项--silit_version=mspx。   

    谢谢,此致,

    -George