【发布时间】:2021-04-04 14:35:39
【问题描述】:
我第一次在我的 Raspberry Pi 4 上尝试汇编代码(对不起,如果代码没有以标准方式格式化)并且我正在尝试执行我的 Hello World 代码
.global _start
_start:
mov r0, #1
ldr r1, =helloworld
mov r2, #12
mov r8, #64
svc 0
mov r0, #0
mov r8, #93
svc 0
.data
helloworld: .ascii "Hello World\n"
代码编译没有错误,但是当我尝试使用 ./HelloWorld 执行我的代码时,我得到错误“非法指令”,没有其他消息。有什么想法吗?
【问题讨论】:
-
使用调试器和/或 strace。我假设你最后一次 svc 调用是错误的,所以它不会终止进程并且 cpu 继续执行。
-
另请参阅文档。使用
r8是可疑的,数字也很奇怪。您使用的是什么操作系统? -
我发现了我的问题,我正在学习的书说我需要在我的树莓派上运行 64 位版本的 Linux,但现在我正在运行 32 位树莓派。跨度>
-
@LordBobbiousX 用于 ARM64 和 ARM32 的程序集有很大不同。我很惊讶你没有注意到。你不能在 32 位 Raspbian 上运行 ARM64 程序。
标签: assembly arm raspberry-pi4