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.

[参考译文] 编译器/TMS570LS1224:汇编器使用问题

Guru**** 2589300 points
Other Parts Discussed in Thread: TMS570LS1224

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/617487/compiler-tms570ls1224-assembler-usage-question

部件号:TMS570LS1224

工具/软件:TI C/C++编译器

我今天有很多问题...

另一个问题是:我想从汇编语言文件访问C文件中声明的全局变量。

变量compmode在C文件中声明为"UINT32_t compmode"。 我有以下汇编程序代码:

.ref压缩模式 ;对C文件中定义的变量的引用

asmfunc
测试模式
LDR R1,压缩模式 ;此处发生错误!
LDR R1,[R1]
。
。
。 

当此文件被组合时,我收到错误“错误!  在第xx行: [E0001]必须在当前部分中定义地址"。

如何修复此问题以使其正确组装?

谢谢!

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

    由于这是一个专门针对汇编工具和CCS的问题,我将把它移到CCS代码生成工具论坛。 他们将有一个更好的视角,为有关编译器和汇编器工具(不是专门针对Hercules设备)的问题提供更全面的答案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对于阅读的人来说,TMS570LS1224是采用ARM Cortex-R4F的Hercules

    解决此类问题的最简单方法是让编译器为您完成工作。 创建简单的程序:

    int compmode;
    int func(){返回compmode;} 

    让我们看看编译器如何使用此函数:

    armcl -k func.c -mv7r4 --embedded_constants=off 
    功能:
    MOVW V9,compmoda+0
    MOVT V9,compmoda+0
    LDR A1,[V9,#0]
    bx 左 

    因此,您所期望的方法是使用MOVW/MOVT对将地址输入寄存器。

    我承认嵌入式常量选项并不明显,但我认为CCS在Cortex-R4F项目中默认为您设置此选项。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    成功了。 谢谢! 我必须记住查看C编译器生成的程序集的技术。