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.

[参考译文] Compiler/AWR1642:使用预处理程序指令集成/编译ASM文件

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/602230/compiler-awr1642-integrate-compile-asm-files-with-preprocessor-directives

部件号:AWR1642

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

尊敬的编译器专家:

客户的项目中使用预处理程序指令(#include,#define,#ifdef,#ifndef,...)有ASM文件。 生成代码时,他收到类似的错误消息

===========================

错误!  在第1行:[E0003]只有标签和注释可以从第一列开始。 确保标签名称不是保留的关键字。
    /* boardAsm.asm
错误!  在第1行:[E0002]指定了非法助记符
    /* boardAsm.asm

错误!  在第2行:[E0002]指定了非法助记符
     *
...

错误!  在第9行:[E0003]只有标签和注释可以从第一列开始。 确保标签名称不是保留的关键字。
    #ifndef OS_ASM

===========================

其他编译器似乎通过特定的文件扩展名或编译器选项(例如-preprocess_assembly_files)提供汇编器文件的预处理

我们的TI ARM编译器16.9 .1.LTS是否有类似的内容?

我已查看TI ARM汇编器用户指南。 提到了一些预处理选项,但也提到,它们不会写入预处理输出,而是生成一些列表文件。

还介绍了".cdecls"选项,该选项似乎会自动将C-type指令转换为汇编程序指令,但不确定这是否是唯一的最佳选项。

将这些文件集成到构建过程中的正确和/或最有效方法是什么?

谢谢,此致,

格雷戈

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对不起,TI汇编程序不支持在.cdecls之外的汇编代码中进行C预处理。 cdecls中的所有内容都必须是C代码,因此它不适用于汇编代码的条件编译。 TI汇编器有自己的预处理指令,如.if和.include;用户需要将汇编代码转换为使用TI指令,但这是一个简单的映射。

    最有效的方法是使用不同的ARM供应商组装文件,确保生成EABI文件。 然后,您可以将EABI目标文件放入项目中,TI链接器将接受该文件。