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.
工具与软件:
Code Composer Studio v12.8.1.00005
版本:12.8.0.202407141830
构建 ID:N202407141830
编译器版本:TI v20.2.5.LTS [TI v21.6.0.LTS]
"Disassembly"视图似乎显示了错误的指令助记符、例如
_c_int00_noargs():
00c600: 0081 .word 0x0081
00c602: 5DC0 13B2 ADD.B R13,0xd9b6
111 if(_system_pre_init() != 0)
00c606: F6E8 930C AND.B @R6,0x930c(R8)
00c60a: 2402 JEQ ($C$L2)
114 _auto_init();
00c60c: 13B2 .word 0x13B2
00c60e: CFB8 430C BIC.W @R15+,0x430c(R8)
123 main(0);
00c612: 13B2 .word 0x13B2
00c614: D36C BIS.B #2,R12
125 exit(1);
00c616: 431C MOV.W #1,R12
00c618: 13B3 .word 0x13B3
00c61a: 1EF0 .word 0x1EF0
"Disassembly"视图中显示的上述代码来自 boot.c 为什么"0081"不显示为"MOVA __STACK_END、SP"? 应将下一行"5DC0 13B2"解码为"CALLA #_SYSTEM_PRE_INIT"。 依此类推。
似乎唯一解码的正确指令是"00c616:431C MOV.W #1.R12"
反汇编为何如此不同?
是否有任何设置可能导致此错误显示?
谢谢。
反汇编器似乎没有获得有关这是 MSP430 CPUx 型号代码的消息。 在基本 MSP430上、0x0081不是有效的操作码、因此它显示为常量。 从那里走下坡路。
好的、那么如何将消息发送到我正在使用 CPUx 型号的反汇编器?
谢谢!
我使用的是 GNU 工具、而不是 CCS、因此无法提供帮助。 但在我看来、CSS 使用了与 GNU 相同的.elf 文件格式。 该文件包含这些信息。 或者至少对于 GNU 是这样。
$ /usr/ti/gcc/bin/msp430-elf-readelf -A a.out Attribute Section: mspabi File Attributes Tag_ISA: MSP430X Tag_Code_Model: Large Tag_Data_Model: Large Attribute Section: gnu File Attributes Tag_GNU_MSP430_Data_Region: Lower Region Only
好的、我从 TI 的网站安装了 msp430-gcc、并在 CCS 链接器输出文件中获得了以下内容:
C:\...>msp430-elf-readelf.exe -A a.out ... Attribute Section: mspabi File Attributes Tag_ISA: MSP430X Tag_Code_Model: Large Tag_Data_Model: Large <unknown tag 10>: 1 (0x1)
输出文件是否正确。 在检测 CPU 变体时、CCS 组件查看器中可能存在一些错误?
谢谢。
由于您有 GNU 工具、您可以使用 msp430-elf-objdump 来反汇编您的代码。 S 选项将源代码(如果它尚未被剥离)与输出交叉。
感谢您的建议。 CCS 还提供了工作正常的命令行反汇编器 dis430.exe。 由于我使用 CCS GUI、因此 GUI 中的 CCS 反汇编查看器能够按预期运行会更加方便。
我想最后的办法就是卸载/重新安装 CCS 并重新创建项目。。
我希望 CCS 团队了解这一问题。
再次感谢 David。
您好!
您可以开始新主题帖、然后将 CCStudio 作为器件型号、 然后 CCS 团队将研究该线程。
此致、
Cash Hao