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.

[参考译文] TMS570LC4357:在汇编器.cdecls 枚举处理中存在严重遗漏

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1257754/tms570lc4357-serious-omission-in-assembler-cdecls-enum-handling

器件型号:TMS570LC4357

(这是 CCS 7.4.0.00015下的代码-是的、我知道它相当旧、我正在处理一些旧代码...)  在汇编器中、对原始代码进行了大幅简化:

.cdecls C
%{
 enum{cpu_mode = 0x1f};
%}
 .text
 和 r5、r0、#cpu_mode

绘制"未知符号"错误。   汇编器代码似乎没有任何方法可以引用不带枚举标签名称声明的 C 枚举常量(这是合法的 C 语言、一直以来都是这样的、现在是一种声明整数常量的非常常用的方法)。

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

    尊敬的 Henry:

    不幸的是、  .cdecls  指令不受支持。

    请参阅以下主题、了解更多详细信息:

    (+) TMS570LS1114:tiarmclang:此目标不支持.cdecls 指令-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --

    谢谢。此致、
    Jagadish。

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

    注意关于"CCS 7.4.0.00015"的部分--截至该版本,.cdecls 已经存在并且可以正常工作,除了这一个麻烦的情况。

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

    尊敬的 Henry:

    您能否尝试通过以下方式进行声明、看看?

    这在我身边起作用。

    --

    谢谢。此致、
    Jagadish。

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

    我已经知道它确实起作用。  正如我说过的、问题不在于.cdecls 在一般情况下不起作用(在 CCS 7.4.0和类似的旧版本中)、但它显然无法处理这一特定情况: 枚举(不是#defined)常量声明没有枚举标签名称。  这很重要、因为.cdecls 的巨大优势是能够使用_existing_C 头文件、而无需为了汇编器的利益而重新写入它们。  一些头文件使用麻烦的语法声明了很多常量,这是合法的 C 语言,我不想使用#define 重写所有常量。

    我想知道、大多数情况下、这实际上是否起作用、除了必须使用一些未记录的特殊语法在汇编器中访问此类名称外。  正常的汇编程序对.cdecls 枚举常量的访问需要写入 enumtagname.constantname、因此可以通过使用一些特殊的占位符 标签名称来访问声明没有标签名称的常量。  实际上、这比替代方案更有意义、那就是实施者根本就没有实施这种情况。  遗憾的是、 汇编语言工具手册  根本没有提到无标签名称的情况、因此没有提示占位符是什么、一些采用明显选择的实验都不成功。

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

    亨利

    已理解您的查询。

    但我对使用.cdecls 声明枚举没有任何了解、因此我将尝试与我的内部团队讨论一次并就此与您联系。

    --

    谢谢。此致、
    Jagadish。