MDK main()函数执行前汇编代码分析
来源:互联网 发布:ios内购 元数据丢失 编辑:程序博客网 时间:2024/06/14 22:19
参考资料:MDK main函数运行前的分析
** ELF Header Information
File Name: .\Objects\test.axf
Machine class: ELFCLASS32 (32-bit)
Data encoding: ELFDATA2LSB (Little endian)
Header version: EV_CURRENT (Current version)
Operating System ABI: none
ABI Version: 0
File Type: ET_EXEC (Executable) (2)
Machine: EM_ARM (ARM)
Image Entry point: 0x080000ed
Flags: EF_ARM_HASENTRY (0x05000002)
ARM ELF revision: 5 (ABI version 2)
Built with
Component: ARM Compiler 5.05 (build 41) Tool: armasm [4d0eb9]
Component: ARM Compiler 5.05 (build 41) Tool: armlink [4d0eb9]
Header size: 52 bytes (0x34)
Program header entry size: 32 bytes (0x20)
Section header entry size: 40 bytes (0x28)
Program header entries: 1
Section header entries: 16
Program header offset: 25208 (0x00006278)
Section header offset: 25240 (0x00006298)
Section header string table index: 15
========================================================================
** Program header #0 (PT_LOAD) [PF_X + PF_W + PF_R + PF_ARM_ENTRY]
Size : 3364 bytes (1728 bytes in file)
Virtual address: 0x08000000 (Alignment 8)
========================================================================
** Section #1 'ER_IROM1' (SHT_PROGBITS) [SHF_ALLOC + SHF_EXECINSTR]
Size : 1708 bytes (alignment 4)
Address: 0x08000000
$d.realdata
RESET
__Vectors
0x08000000: 20000678 x.. DCD 536872568
0x08000004: 08000191 .... DCD 134218129
0x08000008: 080001f3 .... DCD 134218227
0x0800000c: 080001f5 .... DCD 134218229
0x08000010: 080001f9 .... DCD 134218233
0x08000014: 080001fd .... DCD 134218237
0x08000018: 08000201 .... DCD 134218241
0x0800001c: 00000000 .... DCD 0
0x08000020: 00000000 .... DCD 0
0x08000024: 00000000 .... DCD 0
0x08000028: 00000000 .... DCD 0
0x0800002c: 08000205 .... DCD 134218245
0x08000030: 08000207 .... DCD 134218247
0x08000034: 00000000 .... DCD 0
0x08000038: 08000209 .... DCD 134218249
0x0800003c: 0800020b .... DCD 134218251
0x08000040: 080001ab .... DCD 134218155 ;外部异常使用同一入口地址
0x08000044: 080001ab .... DCD 134218155
0x08000048: 080001ab .... DCD 134218155
0x0800004c: 080001ab .... DCD 134218155
0x08000050: 080001ab .... DCD 134218155
0x08000054: 080001ab .... DCD 134218155
0x08000058: 080001ab .... DCD 134218155
0x0800005c: 080001ab .... DCD 134218155
0x08000060: 080001ab .... DCD 134218155
0x08000064: 080001ab .... DCD 134218155
0x08000068: 080001ab .... DCD 134218155
0x0800006c: 080001ab .... DCD 134218155
0x08000070: 080001ab .... DCD 134218155
0x08000074: 080001ab .... DCD 134218155
0x08000078: 080001ab .... DCD 134218155
0x0800007c: 080001ab .... DCD 134218155
0x08000080: 080001ab .... DCD 134218155
0x08000084: 080001ab .... DCD 134218155
0x08000088: 080001ab .... DCD 134218155
0x0800008c: 080001ab .... DCD 134218155
0x08000090: 080001ab .... DCD 134218155
0x08000094: 080001ab .... DCD 134218155
0x08000098: 080001ab .... DCD 134218155
0x0800009c: 080001ab .... DCD 134218155
0x080000a0: 080001ab .... DCD 134218155
0x080000a4: 080001ab .... DCD 134218155
0x080000a8: 080001ab .... DCD 134218155
0x080000ac: 080001ab .... DCD 134218155
0x080000b0: 080001ab .... DCD 134218155
0x080000b4: 080001ab .... DCD 134218155
0x080000b8: 080001ab .... DCD 134218155
0x080000bc: 080001ab .... DCD 134218155
0x080000c0: 080001ab .... DCD 134218155
0x080000c4: 080001ab .... DCD 134218155
0x080000c8: 080001ab .... DCD 134218155
0x080000cc: 080001ab .... DCD 134218155
0x080000d0: 080001ab .... DCD 134218155
0x080000d4: 080001ab .... DCD 134218155
0x080000d8: 080001ab .... DCD 134218155
0x080000dc: 080001ab .... DCD 134218155
0x080000e0: 080001ab .... DCD 134218155
0x080000e4: 080001ab .... DCD 134218155
0x080000e8: 080001ab .... DCD 134218155
$t
!!!main
__Vectors_End
__main
0x080000ec: f000f802 .... BL __scatterload ; 0x80000f4
0x080000f0: f000f83e ..>. BL __rt_entry ; 0x8000170 ; __re_entry中调用main()函数
!!!scatter
__scatterload
__scatterload_rt2
__scatterload_rt2_thumb_only
0x080000f4: a00a .. ADR r0,{pc}+0x2c ; 0x8000120 r0 = 0x8000120
0x080000f6: e8900c00 .... LDM r0,{r10,r11} ; r10 = 0x56c, r11 = 0x58c
0x080000fa: 4482 .D ADD r10,r10,r0 ; r10 = 0x800068C
0x080000fc: 4483 .D ADD r11,r11,r0 ; r11 = 0x80006AC
0x080000fe: f1aa0701 .... SUB r7,r10,#1 ; r7 = 0x800068B
__scatterload_null
0x08000102: 45da .E CMP r10,r11
0x08000104: d101 .. BNE 0x800010a ; __scatterload_null + 8
0x08000106: f000f833 ..3. BL __rt_entry ; 0x8000170
0x0800010a: f2af0e09 .... ADR lr,{pc}-7 ; lr = 0x8000103
0x0800010e: e8ba000f .... LDM r10!,{r0-r3} ; 第一次(r0 = 0x080006ac, r1 = 0x20000000, r2 = 0x00000014, r3 = 0x08000128, r10 = 0x800069C)
; 第二次(r0 = 0x080006c0, r1 = 0x20000014, r2 = 0x00000664, r3 = 0x08000144, r10 = 0x80006AC)
0x08000112: f0130f01 .... TST r3,#1
0x08000116: bf18 .. IT NE ; 如果不相等执行SBUNE Z clear
0x08000118: 1afb .. SUBNE r3,r7,r3
0x0800011a: f0430301 C... ORR r3,r3,#1
0x0800011e: 4718 .G BX r3
$d
0x08000120: 0000056c l... DCD 1388 ; ????
0x08000124: 0000058c .... DCD 1420
$t
!!handler_copy
__scatterload_copy
0x08000128: 3a10 .: SUBS r2,r2,#0x10 ; r2 = 0x00000014 RW data大小
0x0800012a: bf24 $. ITT CS ; 如果C位为1(判断r2中的值是否是正数)执行4字节复制,IT指令及CS 参考《ARM Development Tools》
0x0800012c: c878 x. LDMCS r0!,{r3-r6} ; r0 = 0x080006ac 代码之后的flash中存放rw数据 将RW data复制到内存
0x0800012e: c178 x. STMCS r1!,{r3-r6}
0x08000130: d8fa .. BHI __scatterload_copy ; 0x8000128
0x08000132: 0752 R. LSLS r2,r2,#29 ; 左移29位根据C位判断剩下的字节数是8还是4
0x08000134: bf24 $. ITT CS ; C set C 1 r2 0000 0000 0000 0000 0000 0000 0000 0000
0x08000136: c830 0. LDMCS r0!,{r4,r5}
0x08000138: c130 0. STMCS r1!,{r4,r5}
0x0800013a: bf44 D. ITT MI ; N set C 0 r2 1000 0000 0000 0000 0000 0000 0000 0000
0x0800013c: 6804 .h LDRMI r4,[r0,#0]
0x0800013e: 600c .` STRMI r4,[r1,#0]
0x08000140: 4770 pG BX lr
0x08000142: 0000 .. MOVS r0,r0
!!handler_zi
__scatterload_zeroinit ; r1 = 0x20000000 + data段的大小 在接下来的内存中初始化.bss段
0x08000144: 2300 .# MOVS r3,#0
0x08000146: 2400 .$ MOVS r4,#0
0x08000148: 2500 .% MOVS r5,#0
0x0800014a: 2600 .& MOVS r6,#0
0x0800014c: 3a10 .: SUBS r2,r2,#0x10
0x0800014e: bf28 (. IT CS
0x08000150: c178 x. STMCS r1!,{r3-r6}
0x08000152: d8fb .. BHI 0x800014c ; __scatterload_zeroinit + 8
0x08000154: 0752 R. LSLS r2,r2,#29
0x08000156: bf28 (. IT CS
0x08000158: c130 0. STMCS r1!,{r4,r5}
0x0800015a: bf48 H. IT MI
0x0800015c: 600b .` STRMI r3,[r1,#0]
0x0800015e: 4770 pG BX lr
.ARM.Collect$$libinit$$00000000
__rt_lib_init
0x08000160: b51f .. PUSH {r0-r4,lr}
.ARM.Collect$$libinit$$00000002
.ARM.Collect$$libinit$$00000004
.ARM.Collect$$libinit$$00000005
__rt_lib_init_fp_1
__rt_lib_init_heap_2
__rt_lib_init_preinit_1
0x08000162: e89d0003 .... LDM sp,{r0,r1}
0x08000166: f000f9b7 .... BL _init_alloc ; 0x80004d8
.ARM.Collect$$libinit$$0000000A
.ARM.Collect$$libinit$$0000000C
.ARM.Collect$$libinit$$0000000E
.ARM.Collect$$libinit$$00000011
.ARM.Collect$$libinit$$00000013
.ARM.Collect$$libinit$$00000015
.ARM.Collect$$libinit$$00000017
.ARM.Collect$$libinit$$00000019
.ARM.Collect$$libinit$$0000001B
.ARM.Collect$$libinit$$0000001D
.ARM.Collect$$libinit$$0000001F
.ARM.Collect$$libinit$$00000021
.ARM.Collect$$libinit$$00000023
.ARM.Collect$$libinit$$00000025
.ARM.Collect$$libinit$$0000002C
.ARM.Collect$$libinit$$0000002E
.ARM.Collect$$libinit$$00000030
.ARM.Collect$$libinit$$00000032
.ARM.Collect$$libinit$$00000033
__rt_lib_init_alloca_1
__rt_lib_init_argv_1
__rt_lib_init_atexit_1
__rt_lib_init_clock_1
__rt_lib_init_cpp_1
__rt_lib_init_exceptions_1
__rt_lib_init_fp_trap_1
__rt_lib_init_getenv_1
__rt_lib_init_heap_1
__rt_lib_init_lc_collate_1
__rt_lib_init_lc_ctype_1
__rt_lib_init_lc_monetary_1
__rt_lib_init_lc_numeric_1
__rt_lib_init_lc_time_1
__rt_lib_init_rand_1
__rt_lib_init_return
__rt_lib_init_signal_1
__rt_lib_init_stdio_1
__rt_lib_init_user_alloc_1
0x0800016a: bd1f .. POP {r0-r4,pc}
.ARM.Collect$$libshutdown$$00000000
__rt_lib_shutdown
0x0800016c: b510 .. PUSH {r4,lr}
.ARM.Collect$$libshutdown$$00000003
.ARM.Collect$$libshutdown$$00000006
.ARM.Collect$$libshutdown$$00000009
.ARM.Collect$$libshutdown$$0000000B
.ARM.Collect$$libshutdown$$0000000E
.ARM.Collect$$libshutdown$$0000000F
__rt_lib_shutdown_fp_trap_1
__rt_lib_shutdown_heap_1
__rt_lib_shutdown_return
__rt_lib_shutdown_signal_1
__rt_lib_shutdown_stdio_1
__rt_lib_shutdown_user_alloc_1
0x0800016e: bd10 .. POP {r4,pc}
.ARM.Collect$$rtentry$$00000000
.ARM.Collect$$rtentry$$00000002
.ARM.Collect$$rtentry$$00000004
__rt_entry
__rt_entry_presh_1
__rt_entry_sh
0x08000170: f000fa0e .... BL __semihosting_library_function ; 0x8000590
0x08000174: 4611 .F MOV r1,r2
.ARM.Collect$$rtentry$$00000009
.ARM.Collect$$rtentry$$0000000A
__rt_entry_li
__rt_entry_postsh_1
0x08000176: f7fffff3 .... BL __rt_lib_init ; 0x8000160
.ARM.Collect$$rtentry$$0000000C
.ARM.Collect$$rtentry$$0000000D
__rt_entry_main
__rt_entry_postli_1
0x0800017a: f000f829 ..). BL main ; 0x80001d0
0x0800017e: f000fa2c ..,. BL exit ; 0x80005da
.ARM.Collect$$rtexit$$00000000
__rt_exit
0x08000182: b403 .. PUSH {r0,r1}
.ARM.Collect$$rtexit$$00000002
.ARM.Collect$$rtexit$$00000003
__rt_exit_ls
__rt_exit_prels_1
0x08000184: f7fffff2 .... BL __rt_lib_shutdown ; 0x800016c
.ARM.Collect$$rtexit$$00000004
__rt_exit_exit
0x08000188: bc03 .. POP {r0,r1}
0x0800018a: f000fa59 ..Y. BL _sys_exit ; 0x8000640
0x0800018e: 0000 .. MOVS r0,r0
.text
.emb_text
Reset_Handler
_maybe_terminate_alloc
0x08000190: 4809 .H LDR r0,[pc,#36] ; [0x80001b8] = 0x80002eb r0 = 0x80002eb 调用SystemInit()
0x08000192: 4780 .G BLX r0
0x08000194: 4809 .H LDR r0,[pc,#36] ; [0x80001bc] = 0x80000ed r0 = 0x80000ed 调用__main()
0x08000196: 4700 .G BX r0
0x08000198: e7fe .. B 0x8000198 ; Reset_Handler + 8
0x0800019a: e7fe .. B 0x800019a ; Reset_Handler + 10
0x0800019c: e7fe .. B 0x800019c ; Reset_Handler + 12
0x0800019e: e7fe .. B 0x800019e ; Reset_Handler + 14
0x080001a0: e7fe .. B 0x80001a0 ; Reset_Handler + 16
0x080001a2: e7fe .. B 0x80001a2 ; Reset_Handler + 18
0x080001a4: e7fe .. B 0x80001a4 ; Reset_Handler + 20
0x080001a6: e7fe .. B 0x80001a6 ; Reset_Handler + 22
0x080001a8: e7fe .. B 0x80001a8 ; Reset_Handler + 24
ADC1_2_IRQHandler
CAN1_RX1_IRQHandler
CAN1_SCE_IRQHandler
DMA1_Channel1_IRQHandler
DMA1_Channel2_IRQHandler
DMA1_Channel3_IRQHandler
DMA1_Channel4_IRQHandler
DMA1_Channel5_IRQHandler
DMA1_Channel6_IRQHandler
DMA1_Channel7_IRQHandler
EXTI0_IRQHandler
EXTI15_10_IRQHandler
EXTI1_IRQHandler
EXTI2_IRQHandler
EXTI3_IRQHandler
EXTI4_IRQHandler
EXTI9_5_IRQHandler
FLASH_IRQHandler
I2C1_ER_IRQHandler
I2C1_EV_IRQHandler
I2C2_ER_IRQHandler
I2C2_EV_IRQHandler
PVD_IRQHandler
RCC_IRQHandler
RTCAlarm_IRQHandler
RTC_IRQHandler
SPI1_IRQHandler
SPI2_IRQHandler
TAMPER_IRQHandler
TIM1_BRK_IRQHandler
TIM1_CC_IRQHandler
TIM1_TRG_COM_IRQHandler
TIM1_UP_IRQHandler
TIM2_IRQHandler
TIM3_IRQHandler
TIM4_IRQHandler
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
USBWakeUp_IRQHandler
USB_HP_CAN1_TX_IRQHandler
USB_LP_CAN1_RX0_IRQHandler
WWDG_IRQHandler
0x080001aa: e7fe .. B ADC1_2_IRQHandler ; 0x80001aa
__user_initial_stackheap
0x080001ac: 4804 .H LDR r0,[pc,#16] ; [0x80001c0] = 0x20000078
0x080001ae: 4905 .I LDR r1,[pc,#20] ; [0x80001c4] = 0x20000678
0x080001b0: 4a05 .J LDR r2,[pc,#20] ; [0x80001c8] = 0x20000278
0x080001b2: 4b06 .K LDR r3,[pc,#24] ; [0x80001cc] = 0x20000278
0x080001b4: 4770 pG BX lr
$d
0x080001b6: 0000 .. DCW 0
0x080001b8: 080002eb .... DCD 134218475
0x080001bc: 080000ed .... DCD 134217965
0x080001c0: 20000078 x.. DCD 536871032
0x080001c4: 20000678 x.. DCD 536872568
0x080001c8: 20000278 x.. DCD 536871544
0x080001cc: 20000278 x.. DCD 536871544
$t
.text
main
0x080001d0: 2400 .$ MOVS r4,#0
0x080001d2: 2004 . MOVS r0,#4
0x080001d4: f000f90a .... BL malloc ; 0x80003ec
0x080001d8: 4604 .F MOV r4,r0
0x080001da: f04f4000 O..@ MOV r0,#0x80000000
0x080001de: 6020 ` STR r0,[r4,#0]
0x080001e0: bf00 .. NOP
0x080001e2: 4620 F MOV r0,r4
0x080001e4: f000f931 ..1. BL free ; 0x800044a
0x080001e8: bf00 .. NOP
0x080001ea: bf00 .. NOP
0x080001ec: e7fe .. B 0x80001ec ; main + 28
assert_failed
0x080001ee: bf00 .. NOP
0x080001f0: e7fe .. B 0x80001f0 ; assert_failed + 2
.text
NMI_Handler
0x080001f2: 4770 pG BX lr
HardFault_Handler
0x080001f4: bf00 .. NOP
0x080001f6: e7fe .. B 0x80001f6 ; HardFault_Handler + 2
MemManage_Handler
0x080001f8: bf00 .. NOP
0x080001fa: e7fe .. B 0x80001fa ; MemManage_Handler + 2
BusFault_Handler
0x080001fc: bf00 .. NOP
0x080001fe: e7fe .. B 0x80001fe ; BusFault_Handler + 2
UsageFault_Handler
0x08000200: bf00 .. NOP
0x08000202: e7fe .. B 0x8000202 ; UsageFault_Handler + 2
SVC_Handler
0x08000204: 4770 pG BX lr
DebugMon_Handler
0x08000206: 4770 pG BX lr
PendSV_Handler
0x08000208: 4770 pG BX lr
SysTick_Handler
0x0800020a: 4770 pG BX lr
.text
SetSysClockTo72
0x0800020c: b50c .. PUSH {r2,r3,lr}
0x0800020e: 2000 . MOVS r0,#0
0x08000210: 9001 .. STR r0,[sp,#4]
0x08000212: 9000 .. STR r0,[sp,#0]
0x08000214: 486c lH LDR r0,[pc,#432] ; [0x80003c8] = 0x40021000
0x08000216: 6800 .h LDR r0,[r0,#0]
0x08000218: f4403080 @..0 ORR r0,r0,#0x10000
0x0800021c: 496a jI LDR r1,[pc,#424] ; [0x80003c8] = 0x40021000
0x0800021e: 6008 .` STR r0,[r1,#0]
0x08000220: bf00 .. NOP
0x08000222: 4869 iH LDR r0,[pc,#420] ; [0x80003c8] = 0x40021000
0x08000224: 6800 .h LDR r0,[r0,#0]
0x08000226: f4003000 ...0 AND r0,r0,#0x20000
0x0800022a: 9000 .. STR r0,[sp,#0]
0x0800022c: 9801 .. LDR r0,[sp,#4]
0x0800022e: 1c40 @. ADDS r0,r0,#1
0x08000230: 9001 .. STR r0,[sp,#4]
0x08000232: 9800 .. LDR r0,[sp,#0]
0x08000234: b918 .. CBNZ r0,0x800023e ; SetSysClockTo72 + 50
0x08000236: 9801 .. LDR r0,[sp,#4]
0x08000238: f5b06fa0 ...o CMP r0,#0x500
0x0800023c: d1f1 .. BNE 0x8000222 ; SetSysClockTo72 + 22
0x0800023e: 4862 bH LDR r0,[pc,#392] ; [0x80003c8] = 0x40021000
0x08000240: 6800 .h LDR r0,[r0,#0]
0x08000242: f4003000 ...0 AND r0,r0,#0x20000
0x08000246: b110 .. CBZ r0,0x800024e ; SetSysClockTo72 + 66
0x08000248: 2001 . MOVS r0,#1
0x0800024a: 9000 .. STR r0,[sp,#0]
0x0800024c: e001 .. B 0x8000252 ; SetSysClockTo72 + 70
0x0800024e: 2000 . MOVS r0,#0
0x08000250: 9000 .. STR r0,[sp,#0]
0x08000252: 9800 .. LDR r0,[sp,#0]
0x08000254: 2801 .( CMP r0,#1
0x08000256: d143 C. BNE 0x80002e0 ; SetSysClockTo72 + 212
0x08000258: 485c \H LDR r0,[pc,#368] ; [0x80003cc] = 0x40022000
0x0800025a: 6800 .h LDR r0,[r0,#0]
0x0800025c: f0400010 @... ORR r0,r0,#0x10
0x08000260: 495a ZI LDR r1,[pc,#360] ; [0x80003cc] = 0x40022000
0x08000262: 6008 .` STR r0,[r1,#0]
0x08000264: 4608 .F MOV r0,r1
0x08000266: 6800 .h LDR r0,[r0,#0]
0x08000268: f0200003 ... BIC r0,r0,#3
0x0800026c: 6008 .` STR r0,[r1,#0]
0x0800026e: 4608 .F MOV r0,r1
0x08000270: 6800 .h LDR r0,[r0,#0]
0x08000272: f0400002 @... ORR r0,r0,#2
0x08000276: 6008 .` STR r0,[r1,#0]
0x08000278: 4853 SH LDR r0,[pc,#332] ; [0x80003c8] = 0x40021000
0x0800027a: 6840 @h LDR r0,[r0,#4]
0x0800027c: 4952 RI LDR r1,[pc,#328] ; [0x80003c8] = 0x40021000
0x0800027e: 6048 H` STR r0,[r1,#4]
0x08000280: 4608 .F MOV r0,r1
0x08000282: 6840 @h LDR r0,[r0,#4]
0x08000284: 6048 H` STR r0,[r1,#4]
0x08000286: 4608 .F MOV r0,r1
0x08000288: 6840 @h LDR r0,[r0,#4]
0x0800028a: f4406080 @..` ORR r0,r0,#0x400
0x0800028e: 6048 H` STR r0,[r1,#4]
0x08000290: 4608 .F MOV r0,r1
0x08000292: 6840 @h LDR r0,[r0,#4]
0x08000294: f420107c .|. BIC r0,r0,#0x3f0000
0x08000298: 6048 H` STR r0,[r1,#4]
0x0800029a: 4608 .F MOV r0,r1
0x0800029c: 6840 @h LDR r0,[r0,#4]
0x0800029e: f44010e8 @... ORR r0,r0,#0x1d0000
0x080002a2: 6048 H` STR r0,[r1,#4]
0x080002a4: 4608 .F MOV r0,r1
0x080002a6: 6800 .h LDR r0,[r0,#0]
0x080002a8: f0407080 @..p ORR r0,r0,#0x1000000
0x080002ac: 6008 .` STR r0,[r1,#0]
0x080002ae: bf00 .. NOP
0x080002b0: 4845 EH LDR r0,[pc,#276] ; [0x80003c8] = 0x40021000
0x080002b2: 6800 .h LDR r0,[r0,#0]
0x080002b4: f0007000 ...p AND r0,r0,#0x2000000
0x080002b8: 2800 .( CMP r0,#0
0x080002ba: d0f9 .. BEQ 0x80002b0 ; SetSysClockTo72 + 164
0x080002bc: 4842 BH LDR r0,[pc,#264] ; [0x80003c8] = 0x40021000
0x080002be: 6840 @h LDR r0,[r0,#4]
0x080002c0: f0200003 ... BIC r0,r0,#3
0x080002c4: 4940 @I LDR r1,[pc,#256] ; [0x80003c8] = 0x40021000
0x080002c6: 6048 H` STR r0,[r1,#4]
0x080002c8: 4608 .F MOV r0,r1
0x080002ca: 6840 @h LDR r0,[r0,#4]
0x080002cc: f0400002 @... ORR r0,r0,#2
0x080002d0: 6048 H` STR r0,[r1,#4]
0x080002d2: bf00 .. NOP
0x080002d4: 483c <H LDR r0,[pc,#240] ; [0x80003c8] = 0x40021000
0x080002d6: 6840 @h LDR r0,[r0,#4]
0x080002d8: f000000c .... AND r0,r0,#0xc
0x080002dc: 2808 .( CMP r0,#8
0x080002de: d1f9 .. BNE 0x80002d4 ; SetSysClockTo72 + 200
0x080002e0: bd0c .. POP {r2,r3,pc}
SetSysClock
0x080002e2: b510 .. PUSH {r4,lr}
0x080002e4: f7ffff92 .... BL SetSysClockTo72 ; 0x800020c
0x080002e8: bd10 .. POP {r4,pc}
SystemInit
0x080002ea: b510 .. PUSH {r4,lr}
0x080002ec: 4836 6H LDR r0,[pc,#216] ; [0x80003c8] = 0x40021000
0x080002ee: 6800 .h LDR r0,[r0,#0]
0x080002f0: f0400001 @... ORR r0,r0,#1
0x080002f4: 4934 4I LDR r1,[pc,#208] ; [0x80003c8] = 0x40021000
0x080002f6: 6008 .` STR r0,[r1,#0]
0x080002f8: 4608 .F MOV r0,r1
0x080002fa: 6840 @h LDR r0,[r0,#4]
0x080002fc: 4934 4I LDR r1,[pc,#208] ; [0x80003d0] = 0xf8ff0000
0x080002fe: 4008 .@ ANDS r0,r0,r1
0x08000300: 4931 1I LDR r1,[pc,#196] ; [0x80003c8] = 0x40021000
0x08000302: 6048 H` STR r0,[r1,#4]
0x08000304: 4608 .F MOV r0,r1
0x08000306: 6800 .h LDR r0,[r0,#0]
0x08000308: 4932 2I LDR r1,[pc,#200] ; [0x80003d4] = 0xfef6ffff
0x0800030a: 4008 .@ ANDS r0,r0,r1
0x0800030c: 492e .I LDR r1,[pc,#184] ; [0x80003c8] = 0x40021000 r1 = 0x40021000
0x0800030e: 6008 .` STR r0,[r1,#0]
0x08000310: 4608 .F MOV r0,r1
0x08000312: 6800 .h LDR r0,[r0,#0]
0x08000314: f4202080 .. BIC r0,r0,#0x40000
0x08000318: 6008 .` STR r0,[r1,#0]
0x0800031a: 4608 .F MOV r0,r1
0x0800031c: 6840 @h LDR r0,[r0,#4]
0x0800031e: f42000fe ... BIC r0,r0,#0x7f0000
0x08000322: 6048 H` STR r0,[r1,#4]
0x08000324: f44f001f O... MOV r0,#0x9f0000
0x08000328: 6088 .` STR r0,[r1,#8]
0x0800032a: f7ffffda .... BL SetSysClock ; 0x80002e2
0x0800032e: f04f6000 O..` MOV r0,#0x8000000
0x08000332: 4929 )I LDR r1,[pc,#164] ; [0x80003d8] = 0xe000ed08
0x08000334: 6008 .` STR r0,[r1,#0]
0x08000336: bd10 .. POP {r4,pc}
SystemCoreClockUpdate
0x08000338: b510 .. PUSH {r4,lr}
0x0800033a: 2100 .! MOVS r1,#0
0x0800033c: 2000 . MOVS r0,#0
0x0800033e: 2200 ." MOVS r2,#0
0x08000340: 4b21 !K LDR r3,[pc,#132] ; [0x80003c8] = 0x40021000
0x08000342: 685b [h LDR r3,[r3,#4]
0x08000344: f003010c .... AND r1,r3,#0xc
0x08000348: b121 !. CBZ r1,0x8000354 ; SystemCoreClockUpdate + 28
0x0800034a: 2904 .) CMP r1,#4
0x0800034c: d006 .. BEQ 0x800035c ; SystemCoreClockUpdate + 36
0x0800034e: 2908 .) CMP r1,#8
0x08000350: d128 (. BNE 0x80003a4 ; SystemCoreClockUpdate + 108
0x08000352: e007 .. B 0x8000364 ; SystemCoreClockUpdate + 44
0x08000354: 4b21 !K LDR r3,[pc,#132] ; [0x80003dc] = 0x7a1200
0x08000356: 4c22 "L LDR r4,[pc,#136] ; [0x80003e0] = 0x20000000
0x08000358: 6023 #` STR r3,[r4,#0]
0x0800035a: e027 '. B 0x80003ac ; SystemCoreClockUpdate + 116
0x0800035c: 4b1f .K LDR r3,[pc,#124] ; [0x80003dc] = 0x7a1200
0x0800035e: 4c20 L LDR r4,[pc,#128] ; [0x80003e0] = 0x20000000
0x08000360: 6023 #` STR r3,[r4,#0]
0x08000362: e023 #. B 0x80003ac ; SystemCoreClockUpdate + 116
0x08000364: 4b18 .K LDR r3,[pc,#96] ; [0x80003c8] = 0x40021000
0x08000366: 685b [h LDR r3,[r3,#4]
0x08000368: f4031070 ..p. AND r0,r3,#0x3c0000
0x0800036c: 4b16 .K LDR r3,[pc,#88] ; [0x80003c8] = 0x40021000
0x0800036e: 685b [h LDR r3,[r3,#4]
0x08000370: f4033280 ...2 AND r2,r3,#0x10000
0x08000374: 2302 .# MOVS r3,#2
0x08000376: eb034090 ...@ ADD r0,r3,r0,LSR #18
0x0800037a: b922 ". CBNZ r2,0x8000386 ; SystemCoreClockUpdate + 78
0x0800037c: 4b19 .K LDR r3,[pc,#100] ; [0x80003e4] = 0x3d0900
0x0800037e: 4343 CC MULS r3,r0,r3
0x08000380: 4c17 .L LDR r4,[pc,#92] ; [0x80003e0] = 0x20000000
0x08000382: 6023 #` STR r3,[r4,#0]
0x08000384: e00d .. B 0x80003a2 ; SystemCoreClockUpdate + 106
0x08000386: 4b10 .K LDR r3,[pc,#64] ; [0x80003c8] = 0x40021000
0x08000388: 685b [h LDR r3,[r3,#4]
0x0800038a: f4033300 ...3 AND r3,r3,#0x20000
0x0800038e: b123 #. CBZ r3,0x800039a ; SystemCoreClockUpdate + 98
0x08000390: 4b14 .K LDR r3,[pc,#80] ; [0x80003e4] = 0x3d0900
0x08000392: 4343 CC MULS r3,r0,r3
0x08000394: 4c12 .L LDR r4,[pc,#72] ; [0x80003e0] = 0x20000000
0x08000396: 6023 #` STR r3,[r4,#0]
0x08000398: e003 .. B 0x80003a2 ; SystemCoreClockUpdate + 106
0x0800039a: 4b10 .K LDR r3,[pc,#64] ; [0x80003dc] = 0x7a1200
0x0800039c: 4343 CC MULS r3,r0,r3
0x0800039e: 4c10 .L LDR r4,[pc,#64] ; [0x80003e0] = 0x20000000
0x080003a0: 6023 #` STR r3,[r4,#0]
0x080003a2: e003 .. B 0x80003ac ; SystemCoreClockUpdate + 116
0x080003a4: 4b0d .K LDR r3,[pc,#52] ; [0x80003dc] = 0x7a1200
0x080003a6: 4c0e .L LDR r4,[pc,#56] ; [0x80003e0] = 0x20000000
0x080003a8: 6023 #` STR r3,[r4,#0]
0x080003aa: bf00 .. NOP
0x080003ac: bf00 .. NOP
0x080003ae: 4b06 .K LDR r3,[pc,#24] ; [0x80003c8] = 0x40021000 r3 = 0x40021000
0x080003b0: 685b [h LDR r3,[r3,#4] ; r3 = *(0x40021004) RCC_CFGR寄存器
0x080003b2: f3c31303 .... UBFX r3,r3,#4,#4
0x080003b6: 4c0c .L LDR r4,[pc,#48] ; [0x80003e8] = 0x20000004 r4 = 0x20000004
0x080003b8: 5ce1 .\ LDRB r1,[r4,r3]
0x080003ba: 4b09 .K LDR r3,[pc,#36] ; [0x80003e0] = 0x20000000 r3 = 0x20000000
0x080003bc: 681b .h LDR r3,[r3,#0] ;
0x080003be: 40cb .@ LSRS r3,r3,r1
0x080003c0: 4c07 .L LDR r4,[pc,#28] ; [0x80003e0] = 0x20000000
0x080003c2: 6023 #` STR r3,[r4,#0]
0x080003c4: bd10 .. POP {r4,pc}
$d
0x080003c6: 0000 .. DCW 0
0x080003c8: 40021000 ...@ DCD 1073876992
0x080003cc: 40022000 . .@ DCD 1073881088
0x080003d0: f8ff0000 .... DCD 4177461248
0x080003d4: fef6ffff .... DCD 4277600255
0x080003d8: e000ed08 .... DCD 3758157064
0x080003dc: 007a1200 ..z. DCD 8000000
0x080003e0: 20000000 ... DCD 536870912
0x080003e4: 003d0900 ..=. DCD 4000000
0x080003e8: 20000004 ... DCD 536870916
$t
.text
malloc
0x080003ec: b570 p. PUSH {r4-r6,lr}
0x080003ee: 4606 .F MOV r6,r0
0x080003f0: f000f856 ..V. BL __rt_heap_descriptor ; 0x80004a0
0x080003f4: 6805 .h LDR r5,[r0,#0]
0x080003f6: f106000b .... ADD r0,r6,#0xb
0x080003fa: f0200407 ... BIC r4,r0,#7
0x080003fe: 42b4 .B CMP r4,r6
0x08000400: bf9c .. ITT LS
0x08000402: 2000 . MOVLS r0,#0
0x08000404: bd70 p. POPLS {r4-r6,pc}
0x08000406: 462b +F MOV r3,r5
0x08000408: 686a jh LDR r2,[r5,#4]
0x0800040a: b1ba .. CBZ r2,0x800043c ; malloc + 80
0x0800040c: 6810 .h LDR r0,[r2,#0]
0x0800040e: 42a0 .B CMP r0,r4
0x08000410: d310 .. BCC 0x8000434 ; malloc + 72
0x08000412: f1040108 .... ADD r1,r4,#8
0x08000416: 4288 .B CMP r0,r1
0x08000418: bf3c <. ITT CC
0x0800041a: 6850 Ph LDRCC r0,[r2,#4]
0x0800041c: 6058 X` STRCC r0,[r3,#4]
0x0800041e: d307 .. BCC 0x8000430 ; malloc + 68
0x08000420: 6851 Qh LDR r1,[r2,#4]
0x08000422: 1910 .. ADDS r0,r2,r4
0x08000424: 6041 A` STR r1,[r0,#4]
0x08000426: 6811 .h LDR r1,[r2,#0]
0x08000428: 1b09 .. SUBS r1,r1,r4
0x0800042a: 6001 .` STR r1,[r0,#0]
0x0800042c: 6058 X` STR r0,[r3,#4]
0x0800042e: 6014 .` STR r4,[r2,#0]
0x08000430: 1d10 .. ADDS r0,r2,#4
0x08000432: bd70 p. POP {r4-r6,pc}
0x08000434: 4613 .F MOV r3,r2
0x08000436: 6852 Rh LDR r2,[r2,#4]
0x08000438: 2a00 .* CMP r2,#0
0x0800043a: d1e7 .. BNE 0x800040c ; malloc + 32
0x0800043c: 4621 !F MOV r1,r4
0x0800043e: 4628 (F MOV r0,r5
0x08000440: f000f836 ..6. BL __Heap_Full ; 0x80004b0
0x08000444: 2800 .( CMP r0,#0
0x08000446: d1de .. BNE 0x8000406 ; malloc + 26
0x08000448: bd70 p. POP {r4-r6,pc}
.text
free
0x0800044a: b570 p. PUSH {r4-r6,lr}
0x0800044c: 4604 .F MOV r4,r0
0x0800044e: 1f05 .. SUBS r5,r0,#4
0x08000450: f000f826 ..&. BL __rt_heap_descriptor ; 0x80004a0
0x08000454: 6800 .h LDR r0,[r0,#0]
0x08000456: 2c00 ., CMP r4,#0
0x08000458: bf14 .. ITE NE
0x0800045a: 6844 Dh LDRNE r4,[r0,#4]
0x0800045c: bd70 p. POPEQ {r4-r6,pc}
0x0800045e: 2c00 ., CMP r4,#0
0x08000460: bf18 .. IT NE
0x08000462: 42ac .B CMPNE r4,r5
0x08000464: bf3c <. ITT CC
0x08000466: 4620 F MOVCC r0,r4
0x08000468: 6864 dh LDRCC r4,[r4,#4]
0x0800046a: d3f8 .. BCC 0x800045e ; free + 20
0x0800046c: 6801 .h LDR r1,[r0,#0]
0x0800046e: 180a .. ADDS r2,r1,r0
0x08000470: 42aa .B CMP r2,r5
0x08000472: bf18 .. IT NE
0x08000474: 6045 E` STRNE r5,[r0,#4]
0x08000476: d103 .. BNE 0x8000480 ; free + 54
0x08000478: 682a *h LDR r2,[r5,#0]
0x0800047a: 4605 .F MOV r5,r0
0x0800047c: 4411 .D ADD r1,r1,r2
0x0800047e: 6001 .` STR r1,[r0,#0]
0x08000480: 6828 (h LDR r0,[r5,#0]
0x08000482: 1941 A. ADDS r1,r0,r5
0x08000484: 42a1 .B CMP r1,r4
0x08000486: bf1c .. ITT NE
0x08000488: 606c l` STRNE r4,[r5,#4]
0x0800048a: bd70 p. POPNE {r4-r6,pc}
0x0800048c: 6861 ah LDR r1,[r4,#4]
0x0800048e: 6069 i` STR r1,[r5,#4]
0x08000490: 6821 !h LDR r1,[r4,#0]
0x08000492: 4408 .D ADD r0,r0,r1
0x08000494: 6028 (` STR r0,[r5,#0]
0x08000496: bd70 p. POP {r4-r6,pc}
.text
__use_two_region_memory
0x08000498: 4770 pG BX lr
__rt_heap_escrow
0x0800049a: 4770 pG BX lr
__rt_heap_expand
0x0800049c: 4770 pG BX lr
0x0800049e: 0000 .. MOVS r0,r0
.text
__rt_heap_descriptor
0x080004a0: 4800 .H LDR r0,[pc,#0] ; [0x80004a4] = 0x2000001c
0x080004a2: 4770 pG BX lr
$d
0x080004a4: 2000001c ... DCD 536870940
$t
.text
__use_no_heap
0x080004a8: 4770 pG BX lr
__heap$guard
0x080004aa: 4770 pG BX lr
.text
_terminate_user_alloc
0x080004ac: 4770 pG BX lr
_init_user_alloc
0x080004ae: 4770 pG BX lr
__Heap_Full
0x080004b0: b538 8. PUSH {r3-r5,lr}
0x080004b2: 4604 .F MOV r4,r0
0x080004b4: 460a .F MOV r2,r1
0x080004b6: 2000 . MOVS r0,#0
0x080004b8: 4669 iF MOV r1,sp
0x080004ba: f3af8000 .... NOP.W
0x080004be: 2800 .( CMP r0,#0
0x080004c0: bf08 .. IT EQ
0x080004c2: bd38 8. POPEQ {r3-r5,pc}
0x080004c4: 4602 .F MOV r2,r0
0x080004c6: 9900 .. LDR r1,[sp,#0]
0x080004c8: 4620 F MOV r0,r4
0x080004ca: f000f83f ..?. BL __Heap_ProvideMemory ; 0x800054c
0x080004ce: 2001 . MOVS r0,#1
0x080004d0: bd38 8. POP {r3-r5,pc}
__Heap_Broken
0x080004d2: 2001 . MOVS r0,#1
0x080004d4: f000b854 ..T. B.W __rt_SIGRTMEM ; 0x8000580
_init_alloc
0x080004d8: b5f8 .. PUSH {r3-r7,lr}
0x080004da: f3af8000 .... NOP.W
0x080004de: 4605 .F MOV r5,r0
0x080004e0: 2000 . MOVS r0,#0
0x080004e2: 460c .F MOV r4,r1
0x080004e4: 2010 . MOVS r0,#0x10
0x080004e6: bf00 .. NOP
0x080004e8: 4606 .F MOV r6,r0
0x080004ea: 19a8 .. ADDS r0,r5,r6
0x080004ec: 42a0 .B CMP r0,r4
0x080004ee: d90d .. BLS 0x800050c ; _init_alloc + 52
0x080004f0: 4632 2F MOV r2,r6
0x080004f2: 4669 iF MOV r1,sp
0x080004f4: 2000 . MOVS r0,#0
0x080004f6: f3af8000 .... NOP.W
0x080004fa: 0007 .. MOVS r7,r0
0x080004fc: bf08 .. IT EQ
0x080004fe: f000f83f ..?. BLEQ __rt_SIGRTMEM ; 0x8000580
0x08000502: 9800 .. LDR r0,[sp,#0]
0x08000504: 42a0 .B CMP r0,r4
0x08000506: bf18 .. IT NE
0x08000508: 4605 .F MOVNE r5,r0
0x0800050a: 19c4 .. ADDS r4,r0,r7
0x0800050c: f7ffffc8 .... BL __rt_heap_descriptor ; 0x80004a0
0x08000510: 6005 .` STR r5,[r0,#0]
0x08000512: 4607 .F MOV r7,r0
0x08000514: 1df0 .. ADDS r0,r6,#7
0x08000516: f0200007 ... BIC r0,r0,#7
0x0800051a: 1946 F. ADDS r6,r0,r5
0x0800051c: 4628 (F MOV r0,r5
0x0800051e: f000f80a .... BL __Heap_Initialize ; 0x8000536
0x08000522: 42b4 .B CMP r4,r6
0x08000524: bf08 .. IT EQ
0x08000526: bdf8 .. POPEQ {r3-r7,pc}
0x08000528: 1ba2 .. SUBS r2,r4,r6
0x0800052a: 4631 1F MOV r1,r6
0x0800052c: 6838 8h LDR r0,[r7,#0]
0x0800052e: e8bd40f8 ...@ POP {r3-r7,lr}
0x08000532: f000b80b .... B.W __Heap_ProvideMemory ; 0x800054c
.text
__Heap_Initialize
0x08000536: 2100 .! MOVS r1,#0
0x08000538: 6001 .` STR r1,[r0,#0]
0x0800053a: e9c01001 .... STRD r1,r0,[r0,#4]
0x0800053e: 4770 pG BX lr
__Heap_DescSize
0x08000540: 2010 . MOVS r0,#0x10
0x08000542: 4770 pG BX lr
.text
__user_libspace
__user_perproc_libspace
__user_perthread_libspace
0x08000544: 4800 .H LDR r0,[pc,#0] ; [0x8000548] = 0x20000014 r0 = 0x20000014
0x08000546: 4770 pG BX lr
$d
0x08000548: 20000014 ... DCD 536870932
$t
.text
__Heap_ProvideMemory
0x0800054c: 4603 .F MOV r3,r0
0x0800054e: 6840 @h LDR r0,[r0,#4]
0x08000550: 468c .F MOV r12,r1
0x08000552: 2800 .( CMP r0,#0
0x08000554: bf18 .. IT NE
0x08000556: 4288 .B CMPNE r0,r1
0x08000558: bf3c <. ITT CC
0x0800055a: 4603 .F MOVCC r3,r0
0x0800055c: 6840 @h LDRCC r0,[r0,#4]
0x0800055e: d3f8 .. BCC 0x8000552 ; __Heap_ProvideMemory + 6
0x08000560: 6818 .h LDR r0,[r3,#0]
0x08000562: 4418 .D ADD r0,r0,r3
0x08000564: 4288 .B CMP r0,r1
0x08000566: d007 .. BEQ 0x8000578 ; __Heap_ProvideMemory + 44
0x08000568: f10c0003 .... ADD r0,r12,#3
0x0800056c: f0200007 ... BIC r0,r0,#7
0x08000570: 1d00 .. ADDS r0,r0,#4
0x08000572: 1a41 A. SUBS r1,r0,r1
0x08000574: 1a52 R. SUBS r2,r2,r1
0x08000576: 4601 .F MOV r1,r0
0x08000578: 1d08 .. ADDS r0,r1,#4
0x0800057a: 600a .` STR r2,[r1,#0]
0x0800057c: f7ffbf65 ..e. B.W free ; 0x800044a
.text
__rt_SIGRTMEM
0x08000580: b510 .. PUSH {r4,lr}
0x08000582: f000f835 ..5. BL __rt_SIGRTMEM_inner ; 0x80005f0
0x08000586: e8bd4010 ...@ POP {r4,lr}
0x0800058a: f000b82c ..,. B.W __sig_exit ; 0x80005e6
.text
__I$use$semihosting
__use_no_semihosting_swi
0x0800058e: 4770 pG BX lr
.text
.text
__semihosting_library_function
__user_setup_stackheap
0x08000590: 4675 uF MOV r5,lr
0x08000592: f7ffffd7 .... BL __user_libspace ; 0x8000544 r0 = 0x20000014
0x08000596: 46ae .F MOV lr,r5 ; 还原lr的值
0x08000598: 0005 .. MOVS r5,r0 ; r5 = 0x20000014
0x0800059a: 4669 iF MOV r1,sp ; sp = 0x20000678 r1 = 0x20000678 ?不确定
0x0800059c: 4653 SF MOV r3,r10 ; r3 = 0x80006AC
0x0800059e: f0200007 ... BIC r0,r0,#7 ; ??
0x080005a2: 4685 .F MOV sp,r0
0x080005a4: b018 .. ADD sp,sp,#0x60
0x080005a6: b520 . PUSH {r5,lr}
0x080005a8: f7fffe00 .... BL __user_initial_stackheap ; 0x80001ac r0 = 0x20000078, r1 = 0x20000678, r2 = 0x20000278, r3 = 0x20000278
0x080005ac: e8bd4020 .. @ POP {r5,lr}
0x080005b0: f04f0600 O... MOV r6,#0
0x080005b4: f04f0700 O... MOV r7,#0
0x080005b8: f04f0800 O... MOV r8,#0
0x080005bc: f04f0b00 O... MOV r11,#0
0x080005c0: f0210107 !... BIC r1,r1,#7
0x080005c4: 46ac .F MOV r12,r5
0x080005c6: e8ac09c0 .... STM r12!,{r6-r8,r11}
0x080005ca: e8ac09c0 .... STM r12!,{r6-r8,r11}
0x080005ce: e8ac09c0 .... STM r12!,{r6-r8,r11}
0x080005d2: e8ac09c0 .... STM r12!,{r6-r8,r11}
0x080005d6: 468d .F MOV sp,r1
0x080005d8: 4770 pG BX lr
.text
exit
0x080005da: 4604 .F MOV r4,r0
0x080005dc: f3af8000 .... NOP.W
0x080005e0: 4620 F MOV r0,r4
0x080005e2: f7fffdce .... BL __rt_exit ; 0x8000182
.text
__sig_exit
0x080005e6: 2800 .( CMP r0,#0
0x080005e8: d001 .. BEQ 0x80005ee ; __sig_exit + 8
0x080005ea: f000b829 ..). B.W _sys_exit ; 0x8000640
0x080005ee: 4770 pG BX lr
.text
__rt_SIGRTMEM_inner
0x080005f0: b510 .. PUSH {r4,lr}
0x080005f2: 2801 .( CMP r0,#1
0x080005f4: d005 .. BEQ 0x8000602 ; __rt_SIGRTMEM_inner + 18
0x080005f6: 2100 .! MOVS r1,#0
0x080005f8: a003 .. ADR r0,{pc}+0x10 ; 0x8000608
0x080005fa: f000f827 ..'. BL __default_signal_display ; 0x800064c
0x080005fe: 2001 . MOVS r0,#1
0x08000600: bd10 .. POP {r4,pc}
0x08000602: a109 .. ADR r1,{pc}+0x26 ; 0x8000628
0x08000604: e7f8 .. B 0x80005f8 ; __rt_SIGRTMEM_inner + 8
$d
0x08000606: 0000 .. DCW 0
0x08000608: 52474953 SIGR DCD 1380403539
0x0800060c: 4d454d54 TMEM DCD 1296387412
0x08000610: 754f203a : Ou DCD 1968119866
0x08000614: 666f2074 t of DCD 1718558836
0x08000618: 61656820 hea DCD 1634035744
0x0800061c: 656d2070 p me DCD 1701650544
0x08000620: 79726f6d mory DCD 2037542765
0x08000624: 00000000 .... DCD 0
0x08000628: 6548203a : He DCD 1699225658
0x0800062c: 6d207061 ap m DCD 1830842465
0x08000630: 726f6d65 emor DCD 1919905125
0x08000634: 6f632079 y co DCD 1868767353
0x08000638: 70757272 rrup DCD 1886745202
0x0800063c: 00646574 ted. DCD 6579572
$t
.text
_sys_exit
0x08000640: 4901 .I LDR r1,[pc,#4] ; [0x8000648] = 0x20026
0x08000642: 2018 . MOVS r0,#0x18
0x08000644: beab .. BKPT #0xab
0x08000646: e7fe .. B 0x8000646 ; _sys_exit + 6
$d
0x08000648: 00020026 &... DCD 131110
$t
.text
__default_signal_display
0x0800064c: b570 p. PUSH {r4-r6,lr}
0x0800064e: 4605 .F MOV r5,r0
0x08000650: 460c .F MOV r4,r1
0x08000652: 200a . MOVS r0,#0xa
0x08000654: e000 .. B 0x8000658 ; __default_signal_display + 12
0x08000656: 1c6d m. ADDS r5,r5,#1
0x08000658: f000f811 .... BL _ttywrch ; 0x800067e
0x0800065c: b135 5. CBZ r5,0x800066c ; __default_signal_display + 32
0x0800065e: 7828 (x LDRB r0,[r5,#0]
0x08000660: 2800 .( CMP r0,#0
0x08000662: d1f8 .. BNE 0x8000656 ; __default_signal_display + 10
0x08000664: e002 .. B 0x800066c ; __default_signal_display + 32
0x08000666: 1c64 d. ADDS r4,r4,#1
0x08000668: f000f809 .... BL _ttywrch ; 0x800067e
0x0800066c: b114 .. CBZ r4,0x8000674 ; __default_signal_display + 40
0x0800066e: 7820 x LDRB r0,[r4,#0]
0x08000670: 2800 .( CMP r0,#0
0x08000672: d1f8 .. BNE 0x8000666 ; __default_signal_display + 26
0x08000674: e8bd4070 ..p@ POP {r4-r6,lr}
0x08000678: 200a . MOVS r0,#0xa
0x0800067a: f3af8000 .... NOP.W
.text
_ttywrch
0x0800067e: b508 .. PUSH {r3,lr}
0x08000680: 4669 iF MOV r1,sp
0x08000682: f88d0000 .... STRB r0,[sp,#0]
0x08000686: 2003 . MOVS r0,#3
0x08000688: beab .. BKPT #0xab
0x0800068a: bd08 .. POP {r3,pc}
$d.realdata
Region$$Table$$Base
0x0800068c: 080006ac .... DCD 134219436
0x08000690: 20000000 ... DCD 536870912
0x08000694: 00000014 .... DCD 20
0x08000698: 08000128 (... DCD 134218024
0x0800069c: 080006c0 .... DCD 134219456
0x080006a0: 20000014 ... DCD 536870932
0x080006a4: 00000664 d... DCD 1636
0x080006a8: 08000144 D... DCD 134218052
Region$$Table$$Limit
** Section #2 'RW_IRAM1' (SHT_PROGBITS) [SHF_ALLOC + SHF_WRITE]
Size : 20 bytes (alignment 4)
Address: 0x20000000
** Section #3 'RW_IRAM1' (SHT_NOBITS) [SHF_ALLOC + SHF_WRITE]
Size : 1636 bytes (alignment 8)
Address: 0x20000014
** Section #4 '.debug_abbrev' (SHT_PROGBITS)
Size : 1476 bytes
** Section #5 '.debug_frame' (SHT_PROGBITS)
Size : 1472 bytes
** Section #6 '.debug_info' (SHT_PROGBITS)
Size : 2840 bytes
** Section #7 '.debug_line' (SHT_PROGBITS)
Size : 1000 bytes
** Section #8 '.debug_loc' (SHT_PROGBITS)
Size : 368 bytes
** Section #9 '.debug_macinfo' (SHT_PROGBITS)
Size : 2324 bytes
** Section #10 '.debug_pubnames' (SHT_PROGBITS)
Size : 358 bytes
** Section #11 '.symtab' (SHT_SYMTAB)
Size : 5280 bytes (alignment 4)
String table #12 '.strtab'
Last local symbol no. 181
** Section #12 '.strtab' (SHT_STRTAB)
Size : 4956 bytes
** Section #13 '.note' (SHT_NOTE)
Size : 28 bytes (alignment 4)
** Section #14 '.comment' (SHT_PROGBITS)
Size : 3168 bytes
** Section #15 '.shstrtab' (SHT_STRTAB)
Size : 156 bytes
问题总结:
1、生成的HEX文件0x80000000地址处存的栈顶地址有什么作用?在什么时候使用?
2、堆栈初始化具体实现了什么功能?
0 0
- MDK main()函数执行前汇编代码分析
- Main和WinMain函数执行前,系统进行的运行时裤的执行代码分析
- 在main 函数执行前、后再执行的代码
- main函数执行前、后再执行的代码
- main函数执行前、后再执行的代码
- main 函数执行前、后执行的代码
- main函数执行前、后再执行的代码
- main函数执行前、后再执行的代码
- main函数执行前、后再执行的代码
- main函数执行前、后再执行的代码
- 怎样使代码在main函数前执行,怎样使代码在main函数之后执行
- MDK __main()代码执行分析
- main函数的汇编代码
- MDK __main()代码执行过程分析
- main函数开始前执行函数
- c++学习之旅 (在main函数执行前执行一段代码和在main函数执行之后执行一段代码)
- main函数执行前发生了什么
- main函数之前执行代码
- 50 leetcode - Maximum Product Subarray
- ubuntu12.04的64位系统编译android4.0的一些错误的解决方法
- 《TCP/IP详解》读书笔记
- 2241: [SDOI2011]打地鼠
- 产品经理如何推动项目落地
- MDK main()函数执行前汇编代码分析
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- Map集合的遍历方法
- C::求一元二次方程的根
- JDBC第四篇--【数据库连接池、DbUtils框架、分页】
- 用python写的某个月的第一天和最后一天
- Linux_ top 指令的几个重要的参数
- B. 组合数
- 自学之路