는 .text .global _start _start : 선량률 SP = 4096 BL 메인 정지 : B 정지
INT 의 main () { 부호 INT * pGPFCON = (부호 의 INT *) 0x56000050 ; 부호 INT * pGPFDAT = (부호 의 INT *) 0x56000054 ; * = pGPFCON 로 0x100 ; * pGPFDAT = 0 ; 반환 0 ; }
. LED ELF : 파일 - littlearm 포맷 ELF32 이동 섹션의 분해. 텍스트 : 00000000 <_start> 0 : e3a0da01의 MOV의 SP, # 4096 ; 가 0x1000 // 4096 스택 설정 4. : BL의 eb000000 C // 이동 <주> 주요 기능 수행 00000008 <HALT을> . 8 : B의 eafffffe . 8 <HALT> 0000000c <주> : C : e1a0c00d MOV IP // 과제로 SP의 SP 값 = IP 4096 10 ! e92dd800의 STMDB SP는 {FP, IP, LR , PC} // PC가 R15의 LR 인 R14의 IP는 R11입니다 R12 FP이다 값 // 제 환원 SP 4, SP = 4092 및 4096-4093에 규정 된 메모리에 PC의 값을 다음 4 // 4088 SP 값을 저장 한 후, LR의 값은 4092-4089 배치 메모리를 참조 // SP 값 후 4084 4로 감소하고 메모리에 IP 값은 4088-4085 함 4 @ 다음 SP 값 (4080), 행 4083로 IP의 다음 값을 감소 메모리 (4080)이라 // 상기 명령어는 메인 레지스터 호출하기 전에 저장하는 것이 필요하다 (14) : e24cb004 서브 FP, IP # 4. , 0x4로 // IP-FP 4 = 4092 =. 18 인 : e24dd008의 하위 SP, SP를 # . 8 ] 을 0x8 = 4 // SP = SP-4072. 1. C : e3a03456의 MOV R3, # 1442840576 ; 0x56000000 0x56000000 // R3로, 20은 : e2833050 추가 R3, R3, # 80 , 0 × 50 // R3의 값에 80을 추가된다 0x56000050 24 : e50b3010 STR R3, [FP, # - 16 ] 에서 [0x56000050로 // 4076 ] 제 로컬 변수 28 e3a03456의 : MOV의 R3, # 1442840576 ; 에서 0x56000000 // R3 상 0x56000000 2 C : e2833054 추가 R3를, R3, # 84 ; 0x54 // R3의 값 플러스 84 0x56000054하게 30 : e50b3014의 STR의 R3, [FP, # -20 ]을 [0x56000050로 // 4072 ] 제 로컬 변수 (34)는 : e51b2010 LDR R2, [FP, # - 16 ] // 메모리 [에 4076 가치] R2 들어갈 0x56000050 38 : e3a03c01 MOV R3, # 256 ; 로 0x100 3. : C e5823000 STR R3은 [R2]를 메모리에 0x100에서 [0x56000050]를 물품 // 40 - e51b2014 LDR R2, [FP는 번호 : 20 인 // 메모리 [] 4072 값 0x56000054이]는 들어갈 R2 (44)는 : e3a03000 MOV R3, # 0 ; 0x0으로 48 : e5823000 STR R3은 [R2]를 메모리에이 0x0 [0x56000054]를 물품 // 4. C가 : e3a03000 MOV R3, # 0 ; 0x0으로 50 : e1a00003 MOV 의 R0는 R3 (54)는 : e24bd00c의 서브 SP (FP)는, # 12이다 ] 에서 0xc // FP-12 SP = 4092-12 = 4080 = 58 : LDMIA의 e89da800의 SP {FP, SP, PC} // FP로 4083에 메모리 (4080)의 첫 번째 값, 메모리 4084에서 4087의 SP = SP에 4096 // 마지막 주 함수 호출이 완료되는 PC, 4088-4091에 값 //이 LR 후의 다음 명령의 어드레스를 호출하기 전에 레지스터 이동 섹션의 분해한다. 코멘트 : 00000000 <.comment> 0 : 43,434,700 cmpmi R3, # 0 ; 0x0으로 4. : 47,282 03A 정의 8. 2 029554e eorcs R5, R9 , LR, ASR # 10 C : 2e342e33 mrccs 14 , . 1 , R2, CR4, CR3, { 1. } 10 : 주소 0x10으로는 OUT 경계.