【问题标题】:Illegal Instruction when compiling with GAS assembler on Raspberry PI [duplicate]在 Raspberry PI 上使用 GAS 汇编器编译时出现非法指令 [重复]
【发布时间】:2020-12-23 03:06:13
【问题描述】:

我有一个 raspberry pi 2 和 4,当我尝试编译这个汇编代码时,我遇到了同样的问题。

文件名:first.s

.global _start

_start: 
    mov r1, #20
    mov r2, #10
    mov r3, #90
    ADD r2, r1, r3
    svc 0

我正在使用命令:

as -mfpu=vfpv4 -o first.o first.s
ld -o first first.o

使用 gdb 可以让我逐步检查所有内容并使用“信息寄存器”检查寄存器,一切看起来都很好。在程序结束时,它会给出非法指令。如果我注释掉 svc 行、ADD 行等,它会给出非法指令。

【问题讨论】:

  • 感谢您发布重现问题的详细步骤列表!这使得帮助您变得非常容易。跟上!我已经链接了一个关于相同情况的重复问题。尽管它是关于 x86 程序的,但那里给出的答案同样适用于您的问题。
  • 是的,这就是答案。可惜我正在读的书没有指出这一点!

标签: assembly raspberry-pi


【解决方案1】:

当你的程序结束时,CPU 会掉到最后并开始执行随机废话。要干净地退出程序,您必须实际调用 exit 系统调用。看一眼 https://peterdn.com/post/2012/01/14/hello-world-in-arm-assembly/

【讨论】:

  • 完美!谢谢。
猜你喜欢
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多