我刚刚编译了一个简单的程序,它将添加两个数字并将在控制台上打印。我已经在RPI板上编译了它。我认为它编译得很好但是当我运行时我得到了分段错误。
.text
.global main
.extern print
out:
.ascii "THE sum is %d\n\0"
main:
push {ip,lr}
mov r0,#5
mov r1,#4
add r2,r1,r0
ldr r2,=out
bl printf
pop {ip,pc}
stop: b stop
是因为我没有正确地遵循ARM EABI吗?
有谁能让我知道我做错了什么?
答案 0 :(得分:3)
printf(out
)的格式字符串需要进入R0,而不是R2。变化:
ldr r2,=out
为:
ldr r0,=out
此外,如果你想要打印4和5的总和,那么这应该在R1中(否则你只是打印4)。所以改变:
add r2,r1,r0
为:
add r1,r1,r0