| opcode | mnemonic | operands | info |
|---|---|---|---|
| 000000 | sqrt | f f | |
| 000001 | move | r r | |
| 000010 | neg | r r | |
| 000011 | add | r r r | |
| 000100 | addi | r r i | |
| 000101 | sub | r r r | |
| 000110 | subi | r r i | |
| 000111 | mult | r r r | |
| 001000 | multi | r r i | |
| 001001 | div | r r r | |
| 001010 | divi | r r i | |
| 001011 | mov.s | f f | |
| 001100 | neg.s | f f | |
| 001101 | add.s | f f f | |
| 001110 | sub.s | f f f | |
| 001111 | mul.s | f f f | |
| 010000 | div.s | f f f | |
| 010001 | srl | r r r | |
| 010010 | sll | r r r | |
| 010011 | li | r i | |
| 010100 | la | r l | 1 |
| 010101 | lwl | r l | |
| 010110 | lwr | r r i | |
| 010111 | l.sl | f l | |
| 011000 | l.sr | f r i | |
| 011001 | sw | r r i | |
| 011010 | s.s | f r i | |
| 011011 | beq | r r l | |
| 011100 | bne | r r l | |
| 011101 | blt | r r l | |
| 011110 | bgt | r r l | |
| 011111 | c.eq.s | f f l | |
| 100000 | c.le.s | f f l | |
| 100001 | c.lt.s | f f l | |
| 100010 | j | l | |
| 100011 | jr | r | |
| 100100 | jal | l | |
| 100101 | jalr | r | |
| 100110 | srli | r r i | |
| 100111 | slli | r r i | 1 |
| 101000 | print_c | r | |
| 101001 | read_i | r | |
| 101010 | read_f | f | |
| 101011 | beqi | r i' l | |
| 101100 | and | r r r | |
| 101101 | or | r r r | |
| 101110 | xor | r r r | |
| 101111 | andi | r r i | |
| 110000 | ori | r r i | |
| 110001 | xori | r r i | |
| 110010 | exit | ||
| 110011 | swap | r r | |
| 110100 | swap.s | f f | |
| 110101 | select | r r r r | |
| 110110 | select.s | f r f f | |
| 110111 | cmp | r r r p | |
| 111000 | cmpi | r r i'p | |
| 111001 | cmp.s | r f f p | |
| 111010 | cvt.s.w | f r | mov f←r |
| 111011 | cvt.w.s | r f | mov r←f |
| 111100 | madd.s | f f f f | muladd |
| 111101 | bnei | r i' l | |
| 111110 | blti | r i' l | |
| 111111 | bgti | r i' l |
- 1 = レイトレでは使われない
muladd f1 f2 f3 f4=f1 := f2 + f3 * f4
| kind | n | 説明 |
|---|---|---|
| opcode | 6 | オペコード |
| r | 5 | 汎用レジスタ |
| f | 5 | 浮動小数点レジスタ |
| l | 16 | ラベル(16bit unsigend) |
| i | 16 | 即値 (16bit signed) |
| i' | 5 | 即値 ( 5bit signed) |
| p | 3 | 述語 |
| アセンブリでの表現 | 機械語での表現 |
|---|---|
| eq | 000 |
| ne | 001 |
| le | 010 |
| ge | 011 |
| lt | 100 |
| gt | 101 |
例: \tcmpi\teq,$v0,$v1,3
-
余ったbitはdon't care
-
labelは2種類ある(float定数用, jump用)のでそれぞれlf,liと書き分けてますlに統合しました -
即値はsigned short, labelはunsigend short
-
mipsだとb系は相対ジャンプ, j系は絶対ジャンプと決まってるけど全部絶対ジャンプにします(2^16=65536あれば十分のはず)
| dec | bin | mnemonic |
|---|---|---|
| 00 | 00000 | $zero |
| 01 | 00001 | $at |
| 02 | 00010 | $v0 |
| 03 | 00011 | $v1 |
| 04 | 00100 | $a0 |
| 05 | 00101 | $a1 |
| 06 | 00110 | $a2 |
| 07 | 00111 | $a3 |
| 08 | 01000 | $t0 |
| 09 | 01001 | $t1 |
| 10 | 01010 | $t2 |
| 11 | 01011 | $t3 |
| 12 | 01100 | $t4 |
| 13 | 01101 | $t5 |
| 14 | 01110 | $t6 |
| 15 | 01111 | $t7 |
| 16 | 10000 | $s0 |
| 17 | 10001 | $s1 |
| 18 | 10010 | $s2 |
| 19 | 10011 | $s3 |
| 20 | 10100 | $s4 |
| 21 | 10101 | $s5 |
| 22 | 10110 | $s6 |
| 23 | 10111 | $s7 |
| 24 | 11000 | $t8 |
| 25 | 11001 | $t9 |
| 26 | 11010 | $k0 |
| 27 | 11011 | $k1 |
| 28 | 11100 | $gp |
| 29 | 11101 | $sp |
| 30 | 11110 | $fp |
| 31 | 11111 | $ra |