工具/软件:TI C/C++编译器
《ARM 优化 C/C++编译器 v20.2.0.LTS 用户指南 》指出、可以使用以下任一方法来控制函数的起始地址对齐:
- CODE_ALIGN Pragma
- GCC 样式 aligned 函数属性
但是、使用 TI ARM v20.2.3.LTS 编译器时、这两种机制似乎都不起作用:
- 尝试使用 CODE_ALIGN Pragma 会导致警告#163-D:Unrecognized #pragma
- 尝试使用 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 编译器中的错误、还是应该从用户指南中删除它们?
需要对齐起始地址的函数的变通方法是将它们放置在自己的段中、并在链接器命令文件中指定段的对齐方式。