ARM汇编ADDS指令使用及树莓派下ld链接报错问题求助
问题排查结果
你的汇编代码(包括ADDS指令、文件开头的.global _start声明)完全没有问题,报错是链接命令的参数写错导致的,和代码本身无关。
错误原因
ld是链接器,仅能处理汇编生成的目标文件(.o后缀)、库文件等二进制格式文件,无法直接识别.s汇编源码文件。你执行的链接命令是:
ld -o add.o add.s
你把最后一个参数写成了汇编源文件add.s,ld无法识别源码格式,就会默认把传入的文件当成链接器脚本解析,自然就会抛出语法错误。
正确操作步骤
- 汇编生成目标文件(这步你原本的写法是正确的,无报错就说明代码语法没有问题):
as -o add.o add.s
- 链接目标文件生成可执行程序(注意最后一个参数是上一步生成的
add.o目标文件,-o后面跟你要生成的可执行文件名,不要和目标文件名重名即可):
ld -o add add.o
- 运行生成的可执行文件:
./add
你之前只有MOV指令的汇编代码可以正常运行,大概率是之前执行链接操作时参数写对了,本次属于手滑写错参数的问题。
内容的提问来源于stack exchange,提问作者Maya G
相关产品推荐
相关产品推荐

