在gdb下使用以下代码时
.global main
main:
push {r0-r12,lr}
bl cls
ldr r0,=texte
a: ldrb r1,[r0],#1
pop {r0-r12,pc}
cls: push {r0-r2,lr}
pop {r0-r2,pc}
texte: .asciz "Hello World!"
如果在行ldr r0,=texte
处放置一个断点,然后执行“ next”,则该程序不会在下一条指令处停止。它会一直执行到最后。
但是,如果我删除了bl cls
指令,或者我删除了标签“ a:”,则“ next”可以正常工作,即它在“ ldrb” inst处停止。
我真的不明白为什么。
这段代码没有任何意义。只是从更大的程序中提取出来的,可以重现问题。