-
主函数在调用子函数
-
保存下一条指令的地址到lr寄存器中;
-
跳转到子函数
-
保存pc、lr、ip、fp四个寄存器的值到内存中;其中ip的作用是备份栈地址;
-
当子函数返回时,恢复保存在栈中的寄存器的值(通过直接修改pc寄存器的方式(在恢复现场的时候,把原lr保存的值赋值给pc实现),实现子函数返回。)
-
主函数在调用子函数
-
保存下一条指令的地址到lr寄存器中;
-
跳转到子函数
-
保存pc、lr、ip、fp四个寄存器的值到内存中;其中ip的作用是备份栈地址;
-
当子函数返回时,恢复保存在栈中的寄存器的值(通过直接修改pc寄存器的方式(在恢复现场的时候,把原lr保存的值赋值给pc实现),实现子函数返回。)
00000000 <_start>:
0: e3a00a01 mov sp, #4096 ; 0x1000
4: eb000049 bl 130 <main>
00000008 <halt>:
8: eafffffe b 8 <halt>
-> 0000000c <LedInit>:
c: e1a0c00d mov ip, sp
10: e92dd800 stmdb sp!, {fp, ip, lr, pc}
14: e24cb004 sub fp, ip, #4 ; 0x4
18: e3a0220e mov r2, #-536870912 ; 0xe0000000
1c: e2822602 add r2, r2, #2097152 ; 0x200000
20: e2822d0a add r2, r2, #640 ; 0x280
24: e3a0320e mov r3, #-536870912 ; 0xe0000000
28: e2833602 add r3, r3, #2097152 ; 0x200000
2c: e2833d0a add r3, r3, #640 ; 0x280
30: e5933000 ldr r3, [r3]
34: e1a03823 mov r3, r3, lsr #16
38: e1a03803 mov r3, r3, lsl #16
3c: e5823000 str r3, [r2]
40: e3a0220e mov r2, #-536870912 ; 0xe0000000
44: e2822602 add r2, r2, #2097152 ; 0x200000
48: e2822d0a add r2, r2, #640 ; 0x280
4c: e3a0320e mov r3, #-536870912 ; 0xe0000000
50: e2833602 add r3, r3, #2097152 ; 0x200000
54: e2833d0a add r3, r3, #640 ; 0x280
58: e5933000 ldr r3, [r3]
5c: e3833c11 orr r3, r3, #4352 ; 0x1100
60: e3833011 orr r3, r3, #17 ; 0x11
64: e5823000 str r3, [r2]
68: e3a0220e mov r2, #-536870912 ; 0xe0000000
6c: e2822602 add r2, r2, #2097152 ; 0x200000
70: e2822fa3 add r2, r2, #652 ; 0x28c
74: e3a0320e mov r3, #-536870912 ; 0xe0000000
78: e2833602 add r3, r3, #2097152 ; 0x200000
7c: e2833fa3 add r3, r3, #652 ; 0x28c
80: e5933000 ldr r3, [r3]
84: e38330ff orr r3, r3, #255 ; 0xff
88: e5823000 str r3, [r2]
8c: e3a0220e mov r2, #-536870912 ; 0xe0000000
90: e2822602 add r2, r2, #2097152 ; 0x200000
94: e2822fa2 add r2, r2, #648 ; 0x288
98: e3a0320e mov r3, #-536870912 ; 0xe0000000
9c: e2833602 add r3, r3, #2097152 ; 0x200000
a0: e2833fa2 add r3, r3, #648 ; 0x288
a4: e5933000 ldr r3, [r3]
a8: e3c330ff bic r3, r3, #255 ; 0xff
ac: e5823000 str r3, [r2]
b0: e3a0220e mov r2, #-536870912 ; 0xe0000000
b4: e2822602 add r2, r2, #2097152 ; 0x200000
b8: e2822fa2 add r2, r2, #648 ; 0x288
bc: e3a0320e mov r3, #-536870912 ; 0xe0000000
c0: e2833602 add r3, r3, #2097152 ; 0x200000
c4: e2833fa2 add r3, r3, #648 ; 0x288
c8: e5933000 ldr r3, [r3]
cc: e38330aa orr r3, r3, #170 ; 0xaa
d0: e5823000 str r3, [r2]
d4: e3a0220e mov r2, #-536870912 ; 0xe0000000
d8: e2822602 add r2, r2, #2097152 ; 0x200000
dc: e2822fa1 add r2, r2, #644 ; 0x284
e0: e3a0320e mov r3, #-536870912 ; 0xe0000000
e4: e2833602 add r3, r3, #2097152 ; 0x200000
e8: e2833fa1 add r3, r3, #644 ; 0x284
ec: e5933000 ldr r3, [r3]
f0: e383300f orr r3, r3, #15 ; 0xf
f4: e5823000 str r3, [r2]
f8: e89da800 ldmia sp, {fp, sp, pc}
-> 000000fc <Delay>:
fc: e1a0c00d mov ip, sp
100: e92dd800 stmdb sp!, {fp, ip, lr, pc}
104: e24cb004 sub fp, ip, #4 ; 0x4
108: e24dd004 sub sp, sp, #4 ; 0x4
10c: e50b0010 str r0, [fp, #-16]
110: e51b3010 ldr r3, [fp, #-16]
114: e2433001 sub r3, r3, #1 ; 0x1
118: e50b3010 str r3, [fp, #-16]
11c: e51b3010 ldr r3, [fp, #-16]
120: e3730001 cmn r3, #1 ; 0x1
124: 0a000000 beq 12c <Delay+0x30>
128: eafffff8 b 110 <Delay+0x14>
12c: e89da808 ldmia sp, {r3, fp, sp, pc}
-> 00000130 <main>:
130: e1a0c00d mov ip, sp
134: e92dd800 stmdb sp!, {fp, ip, lr, pc}
138: e24cb004 sub fp, ip, #4 ; 0x4
13c: e24dd004 sub sp, sp, #4 ; 0x4
140: e3a03000 mov r3, #0 ; 0x0
144: e50b3010 str r3, [fp, #-16]
-> 148: ebffffaf bl c <LedInit>
14c: e3a0220e mov r2, #-536870912 ; 0xe0000000
150: e2822602 add r2, r2, #2097152 ; 0x200000
154: e2822fa1 add r2, r2, #644 ; 0x284
158: e3a0320e mov r3, #-536870912 ; 0xe0000000
15c: e2833602 add r3, r3, #2097152 ; 0x200000
160: e2833fa1 add r3, r3, #644 ; 0x284
164: e5933000 ldr r3, [r3]
168: e3c3300f bic r3, r3, #15 ; 0xf
16c: e5823000 str r3, [r2]
170: e3a00713 mov r0, #4980736 ; 0x4c0000
174: e2800c4b add r0, r0, #19200 ; 0x4b00
178: e2800040 add r0, r0, #64 ; 0x40
-> 17c: ebffffde bl fc <Delay>
180: e3a0220e mov r2, #-536870912 ; 0xe0000000
184: e2822602 add r2, r2, #2097152 ; 0x200000
188: e2822fa1 add r2, r2, #644 ; 0x284
18c: e3a0320e mov r3, #-536870912 ; 0xe0000000
190: e2833602 add r3, r3, #2097152 ; 0x200000
194: e2833fa1 add r3, r3, #644 ; 0x284
198: e5933000 ldr r3, [r3]
19c: e383300f orr r3, r3, #15 ; 0xf
1a0: e5823000 str r3, [r2]
1a4: e3a03000 mov r3, #0 ; 0x0
1a8: e1a00003 mov r0, r3
1ac: e89da808 ldmia sp, {r3, fp, sp, pc}
Disassembly of section .comment: