#topicpath
#contents

* ARMメモ [#dd6e2d29]

ARMに関するメモ。

** アセンブラと逆アセンブラ [#jb891430]

binutilsを使用。[[pmgr]]収録。

 % cat a.s
 mov pc, lr
 % arm-wince-pe-as a.s
 % arm-wince-pe-objdump -d a.out
 
 a.out:     file format pe-arm-wince-little
 
 Disassembly of section .text:
 
 00000000 <.text>:
    0:   e1a0f00e        mov     pc, lr

** レジスタ [#ha971117]

r0~r15の16個。r9~r15には別名がある。

|CENTER:''レジスタ''|CENTER:''別名''|CENTER:''由来''|CENTER:''説明''|h
|r9|sb|Static Base|?|
|r10|sl|Stack Limit|?|
|r11|fp|Frame Pointer|x86のBPに相当|
|r12|ip|?|x86のIPとは別物。プロローグで使用される|
|r13|sp|Stack Pointer|x86のSPに相当|
|r14|lr|Link Register|return先を示す。mov pc,lrがx86のretに相当|
|r15|pc|Program Counter|x86のIPに相当|

cf. [[あらかじめ宣言された ARM レジスタ名>http://msdn.microsoft.com/ja-jp/library/ms253914.aspx]]

** プロローグ [#oe0e0d98]

ARM
 mov ip, sp
 stmfd sp!, {fp, ip, lr, pc}
 sub fp, ip, #4

x86
 push    ebp
 mov     ebp, esp

** エピローグ [#j4b82ee7]

ARM
 ldmfd sp, {fp, sp, pc}

x86
 pop     ebp
 ret

** コメント [#h51d8b71]

#comment(below)


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS