我在ARM上的Hello World应用程序中存在分段错误


.global main
.align 2
helloworld:
.asciz "Hello World"
.text
main:
ldr r0, =helloworld
bl puts
mov r7, #1
bx lr

我必须使用";bl看跌期权;命令,当我运行程序时,输出为Hello World后面跟着一个Segmentation错误,我不知道我做错了什么。

您从未从程序中返回,因为Peter Cordes指出您的lr寄存器已被对put的调用覆盖。因此,程序跳到lr是什么,并一直执行,直到它到达不属于它的内存,这可能会立即执行。在这一点上,操作系统会收到通知,并杀死你的程序,给你segfault。

最新更新