.textの .GLOBAL _start _start: LDR属、= 4096 BLメイン 停止: B停止
INT ()は、メイン { 符号なし整数 * pGPFCON =(符号なし整数 *)0x56000050 。 符号なし整数 * pGPFDAT =(符号なし整数 *)0x56000054 ; * pGPFCON = 0x100を。 * pGPFDAT = 0 ; リターン 0 ; }
LED。ELF: ファイル・littlearm形式ELF32 sectionTopの分解。テキスト: 00000000 <_start>: 0:e3a0da01の MOVの SP、#4096 ; 4096にスタックを設定0x1000番地// 。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メモリへとPCの値が4096から4093で言及 した後、4 // SP値4088を保存し、その後、LRの値が4092から4089を配置メモリを指す // SP値、その後4084 4まで減少し、その後メモリにIPの値が4088から4085を呼ぶ 4 @その後に4083にSP値4080、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 ; 0x50を// 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 ; R3のが0x54 //値をプラス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] //メモリに[0x56000054]は0x0を書き込む 4。C: e3a03000 MOV R3、#0 、0x0の 50:e1a00003 MOV R3、のR0 54である:e24bd00cの サブ SP、FP、#12であります ; から0xC // FP-12であり、SP = 4092から12 = 4080 = 58:LDMIAのe89da800のSP、{FP、SP、PC} // FPへ4083にメモリ4080内の最初の値、及び4087のメモリ4084 SP、SP = 4096 //最後に、メイン関数呼び出しが終了しているPCに4088から4091まで値、 //そこLR後の次の命令のアドレスを呼び出す前に、登録 sectionTopの分解を。コメント: 00000000 <.comment>: 0: 43434700 cmpmi R3、#0 ; 0x0の 4。:47282 03A 未定義 8。:2 029554e eorcs R5、R9 、LR、ASR#10 C: 2e342e33 mrccs 14、1、R2、CR4、CR3、{ 1 } 10:アドレス0x10のはIS OUT境界の。