TINYCPUの命令セット
TINYCPUの命令セット
| ニーモニック | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 16進 | 動作 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | HALT | 0 | 0 | 0 | 0 | - | - | - | - | - | - | - | - | - | - | - | 0000 | 停止 |
| 2 | PUSHI I | 0 | 0 | 0 | 1 | I | I | I | I | I | I | I | I | I | I | I | 1000+I | 即値Iをスタックにプッシュ |
| 3 | PUSH A | 0 | 0 | 1 | 0 | A | A | A | A | A | A | A | A | A | A | A | 2000+A | A番地の値をスタックにプッシュ |
| 4 | POP A | 0 | 0 | 1 | 1 | A | A | A | A | A | A | A | A | A | A | A | 3000+A | スタックトップをA番地に格納 |
| 5 | JMP A | 0 | 1 | 0 | 0 | A | A | A | A | A | A | A | A | A | A | A | 4000+A | A番地に分岐 |
| 6 | JZ A | 0 | 1 | 0 | 1 | A | A | A | A | A | A | A | A | A | A | A | 5000+A | スタックトップが0ならA番地に分岐 |
| 7 | JNZ A | 0 | 1 | 1 | 0 | A | A | A | A | A | A | A | A | A | A | A | 6000+A | スタックトップが0でないならA番地に分岐 |
| 8 | IN | 1 | 1 | 0 | 1 | - | - | - | - | - | - | - | - | - | - | - | D000 | 入力ポートの値をスタックにプッシュ |
| 9 | OUT | 1 | 1 | 1 | 0 | - | - | - | - | - | - | - | - | - | - | - | E000 | スタックトップを出力バッファに書き込み |
| 10 | OP f | 1 | 1 | 1 | 1 | - | - | - | - | - | - | f | f | f | f | f | F000+f | スタック上で演算を行い,結果をスタックトップに格納 |
| ADD | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 0 | 0 | 0 | F000 | 加算 | |
| SUB | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 0 | 0 | 1 | F001 | 減算 | |
| MUL | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 0 | 1 | 0 | F002 | 乗算 | |
| SHL | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 0 | 1 | 1 | F003 | 左シフト | |
| SHR | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 1 | 0 | 0 | F004 | 右シフト | |
| BAND | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 1 | 0 | 1 | F005 | ビット毎の論理積 | |
| BOR | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 1 | 1 | 0 | F006 | ビット毎の論理和 | |
| BXOR | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 0 | 1 | 1 | 1 | F007 | ビット毎の排他的論理和 | |
| AND | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 0 | 0 | 0 | F008 | 論理積 | |
| OR | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 0 | 0 | 1 | F009 | 論理和 | |
| EQ | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 0 | 1 | 0 | F00A | 等しい | |
| NE | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 0 | 1 | 1 | F00B | 等しくない | |
| GE | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 1 | 0 | 0 | F00C | 大きいか等しい | |
| LE | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 1 | 0 | 1 | F00D | 小さいか等しい | |
| GT | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 1 | 1 | 0 | F00E | 大きい | |
| LT | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 0 | 1 | 1 | 1 | 1 | F00F | 小さい | |
| NEG | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 1 | 0 | 0 | 0 | 0 | F010 | 符号反転 | |
| BNOT | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 1 | 0 | 0 | 0 | 1 | F011 | ビット毎の反転 | |
| NOT | 1 | 1 | 1 | 1 | - | - | - | - | - | - | 1 | 0 | 0 | 1 | 0 | F012 | 論理否定 |
オペランド
PUSHI I(即値プッシュ)は,Iを12ビットの2の補数として扱い,16ビットに符号拡張した値をスタックにプッシュする.
PUSH AなどのオペランドAはアドレスを意味し,12ビットの符号なし2進数として扱う.
最終更新時間:2007年08月28日 22時31分49秒