
表 4: R 形式の主要な命令のアセンブリ言語の例
区分 命令の例 意味 説明
add $s1,$s2,$s3 $s1 = $s2 + $s3 3 オペランド,整数加算
addu $s1,$s2,$s3 $s1 = $s2 + $s3 3 オペランド,符号なし整数加算
算術演算 sub $s1,$s2,$s3 $s1 = $s2 - $s3 3 オペランド,整数減算
subu $s1,$s2,$s3 $s1 = $s2 - $s3 3 オペランド,符号なし整数減算
sra $s1,$s2,shamt $s1 = $s2 >> shamt 定数 shamt 分の算術右シフト
and $s1,$s2,$s3 $s1 = $s2 AND $s3 3 オペランド,ビット単位 AND
or $s1,$s2,$s3 $s1 = $s2 OR $s3 3 オペランド,ビット単位 OR
nor $s1,$s2,$s3 $s1 = $s2 NOR $s3 3 オペランド,ビット単位 NOR
論理演算 xor $s1,$s2,$s3 $s1 = $s2 XOR $s3 3 オペランド,ビット単位 XOR
sll $s1,$s2,shamt $s1 = $s2 << shamt 定数 shamt 分の論理左シフト
srl $s1,$s2,shamt $s1 = $s2 >> shamt 定数 shamt 分の論理右シフト
sllv $s1,$s2,$s3 $s1 = $s2 << $s3 定数 $s3 分の論理左シフト
srlv $s1,$s2,$s3 $s1 = $s2 >> $s3 定数 $s3 分の論理右シフト
条件判定 slt $s1,$s2,$s3 if($s2<$s3) $s1=1 $s2 と$s3 を比較
else $1=0
sltu $s1,$s2,$s3 if($s2<$s3) $s1=1 符号なし数値$s2 と$s3 を比較
else $1=0
手続きサポート jr $s1 goto $s1 PC を$s1 に設定
(ジャンプ) 手続きからの戻り用
jalr $s1,$s2 goto $s1 + $s2 PC を$s1 + $s2 に設定
34 である.デスティネーション・オペランド,第 1 ソース・オペランド,第 2 ソース・オペ
ランドの値は,使用されるレジスタに応じて異なる.この例では,$s1 がデスティネーショ
ン・オペランド,$s2 が第 1 ソース・オペランド,$s3 が第 2 ソース・オペランドのレジスタ
であり,$s1,$s2,$s3 のレジスタ番号である 17,18,19 が,それぞれ rd,rs,rt フィー
ルドの値となっている.
表 5: R 形式の主要な命令の機械語の例
命令 例 op rs rt rd shamt funct
add add $s1,$s2,$s3 0 18 19 17 0 32
addu addu $s1,$s2,$s3 0 18 19 17 0 33
sub sub $s1,$s2,$s3 0 18 19 17 0 34
subu subu $s1,$s2,$s3 0 18 19 17 0 35
sra sra $s1,$s2,10 0 0 18 17 10 3
and and $s1,$s2,$s3 0 18 19 17 0 36
or or $s1,$s2,$s3 0 18 19 17 0 37
nor nor $s1,$s2,$s3 0 18 19 17 0 39
xor xor $s1,$s2,$s3 0 18 19 17 0 38
sll sll $s1,$s2,10 0 0 18 17 10 0
srl srl $s1,$s2,10 0 0 18 17 0 2
sllv sllv $s1,$s2,$s3 0 19 18 17 0 4
srlv srlv $s1,$s2,$s3 0 19 18 17 0 6
slt slt $s1,$s2,$s3 0 18 19 17 0 42
sltu sltu $s1,$s2,$s3 0 18 19 17 0 43
jr jr $s1 0 17 0 0 0 8
jalr jalr $s1,$s2 0 17 0 18 0 9
7