【问题标题】:Assembly Compilation failed dued to unrecognized character [duplicate]由于无法识别的字符,程序集编译失败[重复]
【发布时间】:2021-01-21 11:33:20
【问题描述】:

我在这里向您描述我的问题。 我有一个汇编项目,我必须编译它才能在 Forth 上捕获转换和调用指令。

我必须执行的指令是:

arm-eabi-none delay.s -o delay.o

为了带入目标文件并执行objectDump。

问题是执行给我这个问题:

delay.s: Assembler messages:
delay.s: Warning: end of file not at end of a line; newline inserted
delay.s:1: Error: junk at end of line, first unrecognized character is G'

我在这里报告我的整个代码是为了向你展示我做了什么,因为我真的不明白这个错误。

https://i.stack.imgur.com/r87jk.png

https://i.stack.imgur.com/BieOk.png

https://i.stack.imgur.com/VhRYP.png

【问题讨论】:

  • 您必须以文本形式发布您的代码。
  • 是的,正如该工具所指出的那样,在我见过的任何 asm 中,这些代码的开头行都不是有效的……更不用说 gnu 汇编程序或 gcc,因为您的无效,我们无法分辨命令行。
  • 并且以后不要发布代码图像,发布代码,最小可复制量。还要针对您为此问题准备的代码发布实际命令行。因此,粘贴 100% 导致问题所需的代码和真正的命令行以及工具的输出。在某些情况下,该工具的版本很有用。
  • @old_timer GNU 汇编器接受这种分配。参见manual:“一个符号,后跟一个等号‘=’,后跟一个表达式。这相当于使用.set 指令。”。
  • 您检查过 DOS 或 Mac 与 Unix 的行尾问题吗?就像您可能只有经典的 Mac 换行符(0xD = CR 没有换行符),所以汇编器认为一切都在一行上?您的文字图片对于确定这一点或其他任何事情都没有帮助。但是复制/粘贴为文本也无济于事。

标签: assembly compilation arm


【解决方案1】:

试试这个:

.equ    GPFSEL2,    0x3f200008
.equ    GPSET0,     0x3f20001c
.equ    GPCLR0,     0x3f200028
.equ    GPLEV0,     0x3f200034
.equ    SYSTIMER_CLO,   0x3f003004
.
.
. your code here
.
.
.end

【讨论】:

    【解决方案2】:

    也许你的行尾与汇编器所期望的不匹配,所以汇编器认为一切都在一行上?这可以解释错误消息。 (不过,这可能不是唯一可能的解释。)

    例如,将 x =1 y =2 放入 foo.s 并使用 GNU binutils as 组装它会给出该错误消息:

    foo.s:1: Error: junk at end of line, first unrecognized character is `y'
    

    但是在单独的行上定义了这些汇编时常量,它可以工作。 (即使= 之前有空格,所以这不是问题)。

    (请注意,图像中的第二个源代码行也以 G 开头,因此错误消息无法帮助将其与实际第一行上的不可打印隐藏字符区分开来。)

    您是否检查过 DOS 或 Mac 与 Unix 的换行问题?也许您有 Unix 行尾,但您运行的是 Windows 版本的 as,并且它以某种方式在文本模式输入中丢弃了单个 \n LF (0xa)?或者任何做面向行的输入实际上是在寻找一个 CR LF 对 (\r\n)?

    这也可以解释Warning: end of file not at end of a line; newline inserted


    您的文字图片对于确定这一点或其他任何事情都没有帮助。但是复制/粘贴为文本也无济于事。您可以通过查看源文件的 hexdump 来检查。

    您还可以通过仅使用前 2 行创建 [MCVE] 来简化问题。您只需要应该组装但不会组装的东西;它不必任何事情。

    【讨论】:

    • "a CF LF pair" 用词错误,你的意思是 CR。
    • @ecm:谢谢,已修复。
    • 最后问题只是一些没有实例化的常量谢谢大家
    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多