我们调试的例子以我们在第一篇博文里面创建的工程为例来进行讲述。
例子的完整代码为:
1. x EQU 45
2. y EQU 64
3. stack_top EQU 0x30200000
4.
5. EXPORT Reset_Handler
6.
7. AREA text,CODE,READONLY
8.
9.Reset_Handler
10. ldr sp, =stack_top
11. mov r0, #x
12. str r0, [sp]
13. mov r0, #y
14. ldr r1, [sp]
15. add r0, r0, r1
16. str r0, [sp]
17.
18.stop
19. b stop
20. END
此代码的作用就是将放在寄存器r0中的x值与放在寄存器r1中的y值相加,最后放在r0中。x EQU 45含义内容为x的值为45,同样,y的值为64.stack_top的变量值为0x30200000。在我们代码中,第一句代码内容为将stack_top的内容存放到sp(r13寄存器)中。ldr 此处为伪指令。第11行含义为将x的值存放到寄存器r0中。12含义为将r0寄存器中的内容存放到sp(r13)寄存器中。13行含义为将y的值存放到r0中。14行含义为将sp(r13)寄存器的内容存放到r1寄存器中。15行含义为将寄存器r0和寄存器r1的内容相加,并存放到r0寄存器中。16行内容为将r0中内容存放到sp(r13)寄存器中。到此程