※2017/05/29 追記
とても理解しやすい解説サイト
https://azeria-labs.com/writing-arm-assembly-part-1/
※2018/04/13追記
理解しやすいスライド
https://azeria-labs.com/downloads/HITB-v1.0.pdf
ADD 加算
例. ADD(S) <dst>, <op 1>, <op 2> dst = op1 + op2;
SUB 減算
例. SUB(S) <dst>, <op 1>, <op 2> dst = op1 - op2;
EOR 排他的論理和(XOR)
例. EOR <op 1>, <op 2> (op1 == op2)? 0 : 1;
LDR レジスタの読み込み
例1. LDR <dst>, <op 1> dst = op1; 例2. LDR <dst>, [<op 1>] dst = *(op1); 例3. LDR <dst>, [<op 1>, offset] dst = *(op1 + offset);
STR レジスタの書き込み
例. STR <src>, [<dst>] *(dst) = src
1バイト | 2バイト | 4バイト | |
ロード (符号なし) | LDRB | LDRH | LDR |
ロード (符号付き) | LDRSB | LDRSH | LDR |
ストア | STRB | STRH | STR |
LSL 論理左シフト
例. LSL <dst>, <src>, <op 1> dst = src << op1
LSR 論理右シフト
例. LSR <dst>, <src>, <op 1> dst = src >> op1
CMP 比較
例. CMP <op1>, <op2>
ZF | CF | |
op1 < op2 | 0 | 1 |
op1 > op2 | 0 | 0 |
op1 == op2 | 1 | 0 |
参考
http://www.arm.com/ja/index.php
http://www.heyrick.co.uk/armwiki/Category:Opcodes
http://inaz2.hatenablog.com/entry/2015/03/06/020239
http://milkpot.sakura.ne.jp/note/arm.html
http://www.geocities.co.jp/SiliconValley-SanJose/2148/arm-memo.txt
http://dragon.s151.xrea.com/65816/65816F.html
https://courses.cs.washington.edu/courses/cse469/18wi/Materials/arm64.pdf
https://speakerdeck.com/tnishinaga/arm-introduction