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.

[参考译文] 编译器/TM4C129XNCZAD:TI ARM v20.2.3.LTS 编译器不支持代码对齐

Guru**** 2416410 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/962062/compiler-tm4c129xnczad-ti-arm-v20-2-3-lts-compiler-doesn-t-seem-to-support-code-alignment

器件型号:TM4C129XNCZAD

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

 《ARM 优化 C/C++编译器 v20.2.0.LTS 用户指南 》指出、可以使用以下任一方法来控制函数的起始地址对齐:

  • CODE_ALIGN Pragma
  • GCC 样式 aligned 函数属性

但是、使用 TI ARM v20.2.3.LTS 编译器时、这两种机制似乎都不起作用:

  1. 尝试使用 CODE_ALIGN Pragma 会导致警告#163-D:Unrecognized #pragma
  2. 尝试使用 GCC 样式 aligned 函数属性不会报告警告、但链接器映射显示未向函数起始地址指定请求的对齐。 使用--keep_asm 保存的生成的汇编器不会显示用于该函数的任何.align 汇编器指令。

附加的工程演示了这一点、其中尝试  使用两种机制在测试和主函数上设置32字节对齐。 来自链接器映射的地址显示请求的对齐尚未设置:

000002a9 main
0000029f 测试 

e2e.ti.com/.../code_5F00_align_5F00_ARM.zip

我发现 code_align 和 aligned 函数属性适用于 C2000 v20.2.3.LTS 编译器;在生成汇编器中、您可以看到编译器发出.align 汇编器指令。

CODE_ALIGN 和 aligned 函数属性不起作用是 TI ARM 编译器中的错误、还是应该从用户指南中删除它们?

需要对齐起始地址的函数的变通方法是将它们放置在自己的段中、并在链接器命令文件中指定段的对齐方式。

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

    感谢您将此问题通知我们、并提交一份简明的测试案例。  我可以重现相同的结果。  我提交了问题 EXT_EP-10161 以进行调查。  欢迎您通过该链接访问该链接。

    [引用 user="Chester Gillon"]代码 对齐和对齐函数属性不起作用是 TI ARM 编译器中的一个错误,还是应该从用户指南中删除它们?

    该 pragma 将添加到编译器中、或从手册中删除。  此时、我不确定开发团队将采用哪种方式。

    谢谢、此致、

    乔治