Cortex-M0 Armマシン語表 (asm15、抜粋)

※Rd3とRd2-0の4bitでRdを指定する、RdがPCの時3cycles
※Rd3とRd2-0の4bitでRdを指定する、Rd=PCの時3cycles
※Rd=PC+u8: u8は4byte単位
※[]後の記号でメモリサイズと符号を表す(W:2byte、L:4byte、C:符号付き1byte、S:符号付き2byte)
※u5/u8:Wの場合2byte単位、Lの場合4byte単位となる
※Rn3とRn2-0の4bitでRnを指定する
※n8/n11/n22:飛び先との命令数の差分から-2した数を指定、分岐するとき3cycles
※cond:0-14 (EQ, NE, CS, CC, MI, PL, VS, VC, HI, LS, GE, LT, GT, LE, AL) !を付けて否定
※u7/u8:4byte単位
※PUSH:regsの大きいレジスタから順に、SPを減らしSPへ積む 例)PUSH {R1,R2}
※POP:regsの小さいレジスタから順に、SPから読み込みSPを増やす 例)POP {R1,R2}
※N:指定したレジスタの数、PCへPOPした場合4+Ncycles(それ以外は1+Ncycles)
※BIC:ビットクリア、ASR:符号付き右シフト、ROR:右ローテート
※REV:byteオーダー反転、REV16:byteオーダー反転(2byteずつ)、REVSH:符号付き16bitを反転32bit化
※ADC:キャリー付き足し算、SBC:キャリー付き引き算
※N:指定したレジスタの数(マルチメモリアクセス)
※LDM:アドレスRnからregsの小さいレジスタから順に読み込みRnを進める 例)LDM R0,{R1,R2}
※STM:アドレスRnへregsの小さいレジスタから順に書き込みRnを進める 例)LDM R0,{R1,R2}
※CPSID:割込禁止、CPSIE:割込許可、WFI:割込待ち、NOP:なにもしない(no operation) R0=R0<<0

- マシン語関連ツール
asm15 - Assembler for IchigoJam
cpuemu15 - IchigoJam マシン語エミュレーター alpha1 (説明)
armasm.pdf - このドキュメントのPDF版

- 連載、IchigoJamではじめる、Armマシン語入門
1. はじめてのマシン語
2. ハンドアセンブルで超速計算!
3. マシン語メモリアクセスで画面超速表示!
4. マシン語でLEDを光らせよう!
5. 楽しさ広がるマルチバイトメモリアクセスとスタック
6. マシン語使いこなしTIPS
7. カジュアルに使うインラインマシン語
8. アセンブラを使って楽しよう
9. マシン語で高速SPI
10. マシン語を制するもの時間を制す
11. 画面をイチゴで埋め尽くす12の方法
12. レジスタ不足に上位レジスタとスタック操作

DATA: Cortex-M0プロセッサ - Arm (cycles)
Text: CC BY ichigojam.net