- 追加された行はこの色です。
- 削除された行はこの色です。
- ARM は削除されています。
- ARM の差分を削除
#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)