【问题标题】:cross compile (arm-none-eabi-as) arm assembly error "junk at end of line /" or undefined symbol交叉编译(arm-none-eabi-as)arm 程序集错误“行尾 / 垃圾”或未定义符号
【发布时间】:2010-10-20 06:32:32
【问题描述】:

您好,我交叉编译了一个 startup.s 文件 (arm-none-eabi-as file.s) (*-gcc)

我在每个评论行中都出现了一些错误 - 行尾的垃圾,第一个无法识别的字符是/

当我删除 // 我得到的一些注释行时 即使我在文件开头定义了未定义符号的错误。

有人知道怎么回事吗?

【问题讨论】:

  • #define I_BIT 0x80 ... msr CPSR_c,#ARM_MODE_IRQ | I_BIT | F_BIT
  • 你不能在汇编中使用 C 头文件。

标签: gcc compiler-construction assembly arm cross-compiling


【解决方案1】:

如果要使用宏或 C cmets,则必须使用 C 预处理器对源文件进行预处理。 C 预处理器删除 cmets 并解释宏。如果源文件名以.S 结尾并带有大写“S”,则GNU 汇编器应该自动运行C 预处理器。

【讨论】:

    【解决方案2】:

    (arm) 汇编器不支持 // cmets 或定义,您必须使用 .equ 和 @ 来表示 cmets。如果你让 gcc 解析它,你可以将这样的 C 语言放入你的汇编程序中。就我个人而言,我避免了这种 C 主义并保持汇编程序的清洁。如果您不能这样做或需要包含定义,例如让 gcc 在将文件发送到 gas 之前对其进行预处理。

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 2013-12-16
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多