led.elf:file format elf32-littlearm
Disassembly of section .text:
00000000<_start>:0: e3a0da01 mov sp, #4096 ;0x1000 //设置堆栈为4096
4: eb000000 bl c //跳到main函数执行00000008:8: eafffffe b 80000000c:c: e1a0c00d mov ip, sp //把sp的值赋值给ip=4096
10: e92dd800 stmdb sp!, {fp, ip, lr, pc} //pc是R15 lr是R14 ip是R12 fp是R11
//先把sp的值减4,sp=4092然后把pc的值放到4096到4093所指的内存中
//再把sp值减4为4088 ,然后把lr的值放到4092到4089所指的内存中
//再把sp值减4为4084 ,然后把ip的值放到4088到4085所指的内存中
//再把sp值减4为4080 ,然后把ip的值放到4083到4080所指的内存中
// 上面一条指令是在调用main之前需要保存寄存器的值14: e24cb004 sub fp, ip, #4 ;0x4 // fp =ip-4=4092
18: e24dd008 sub sp, sp, #8 ;0x8 // sp =sp-4=4072
1c: e3a03456 mov r3, #1442840576 ;0x56000000 //把0x56000000放到r3中
20: e2833050 add r3, r3, #80 ;0x50 //把r3的值加80 变成0x56000050
24: e50b3010 str r3, [fp, #-16] //把0x56000050放到[4076] 第一局部变量28: e3a03456 mov