試験参考資料

試験参考資料
※ レジスタとレジスタ番号
レジスタ
$zero
$t0
$t1
$t2
$t3
$t4
$t5
$t6
$t7
$s0
$s1
$s2
$s3
$s4
$s5
$s6
$s7
$gp
レジスタ
番号
0
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
28
※ $zero は定数 0 が格納されているレジスタ
※ 以下の命令表記において $Rn はレジスタの一般表記を表す。
(1) lw 命令
形式表記 lw $Ri, N($Rj)
命令動作 $Ri ← 主記憶 N+$Rj 番地の内容
機械語 100011
$Rj のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
オフセット N
(16bit;2 の補数表現)
$Ri のレジスタ番号
(5bit)
オフセット N
(16bit;2 の補数表現)
(2) sw 命令
形式表記 sw $Ri, N($Rj)
命令動作 主記憶 N+$Rj 番地 ← $Ri
機械語 101011
$Rj のレジスタ番号
(5bit)
(3) add 命令
形式表記 add $Ri, $Rj, $Rk
命令動作 $Ri ← $Rj + $Rk
機械語 000000
$Rj のレジスタ番号
(5bit)
$Rk のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
00000
100000
$Rk のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
00000
100010
(4) sub 命令
形式表記 sub $Ri, $Rj, $Rk
命令動作 $Ri ← $Rj - $Rk
機械語 000000
$Rj のレジスタ番号
(5bit)
(5) addi 命令
形式表記 addi $Ri, $Rj, Imm
Imm は 16bit 符号付(2 の補数表現)整数の即値データ
命令動作 $Ri ← $Rj + Imm
機械語 001000
$Rj のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
即値 Imm
(16bit;2 の補数表現)
(6) sll 命令
形式表記 sll $Ri, $Rj, m
命令動作 $Ri ← $Rj << m (m bit の左論理シフト)
機械語 000000
00000
$Rj のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
m
(5bit)
000000
(7) srl 命令
形式表記 srl $Ri, $Rj, m
命令動作 $Ri ← $Rj >> m (m bit の右論理シフト)
機械語 000000
00000
$Rj のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
m
(5bit)
000010
m
(5bit)
000011
(8) sra 命令
形式表記 sra $Ri, $Rj, m
命令動作 $Ri ← $Rj >> m (m bit の右算術シフト)
機械語 000000
00000
$Rj のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
(9) beq 命令
形式表記 beq $Ri, $Rj, label
$Ri と $Rj が等しければ label(label に対応する主記憶番地)に分岐,さもなければ次の番地
命令動作
の命令を実行
機械語 000100
$Ri のレジスタ番号
(5bit)
$Rj のレジスタ番号
(5bit)
分岐先アドレスのオフセット
(16bit;2 の補数表現)
※ 分岐先アドレスのオフセットは「(分岐先のアドレス- 4 –この分岐命令のアドレス)÷4」 の値を
16 ビットで 2 の補数表現した値 (bne 命令,b 命令も同様)
(10) bne 命令
形式表記 bne $Ri, $Rj, label
命令動作 $Ri と $Rj が等しくなければ label(label に対応する主記憶番地)に分岐,さもなければ次の番地
の命令を実行
機械語 000101
$Ri のレジスタ番号
(5bit)
$Rj のレジスタ番号
(5bit)
分岐先アドレスのオフセット
(16bit;2 の補数表現)
(11) b 命令
形式表記 b
label
命令動作 常に label(label に対応する主記憶番地)に分岐
機械語 000100
00000
00000
分岐先アドレスのオフセット
(16bit;2 の補数表現)
(12) slt 命令
形式表記 slt $Ri, $Rj, $Rk
命令動作 $Rj < $Rk ならば$Ri に 1 を格納し,そうでなければ($Rj≧$Rk ならば)$Ri に 0 を格納する
機械語 000000
$Rj のレジスタ番号
(5bit)
$Rk のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
00000
101010
(13) slti 命令
形式表記 slti $Ri, $Rj, Imm
Imm は 16bit 符号付(2 の補数表現)整数の即値データ
命令動作 $Rj < Imm ならば$Ri に 1 を格納し,そうでなければ($Rj≧Imm ならば)$Ri に 0 を格納する
機械語 001010
$Rj のレジスタ番号
(5bit)
$Ri のレジスタ番号
(5bit)
即値 Imm
(16bit;2 の補数表現)