Assembly Language Convert 組合語言的轉換
指令格式
指令格式大致分成3種:R、I、J,每種都是32bit(0~31)。
R-type:6bit + 5bit + 5bit + 5bit + 5bit + 6bit
opcode rs rt rd shamt funct
I-type:6bit + 5bit + 5bit + 16bit
opcode rs rt immediate
J-type:6bit + 26bit
opcode address
opcode:指令的動作,又稱為運作碼。
rs:第一個來源運算元暫存器。
rt:第二個來源運算元暫存器。
rd:目的運算元暫存器。
shamt:位移量。
funct:功能碼。
immediate:立即值。
address:目標位址。
Example:
1.
add $t0, $s1, $s2 請將此MIPS指令轉為機器指令。
解:
add為R-type,所以欄位對應為:
0(add opcode為0) $s1 $s2 $t0 0(無位移量) 32(經查表得知運作碼為32)
將暫存器換成10進位編號:
0 17 18 8 0 32
轉成二進位:
000000 10001 10010 01000 00000 100000
2.
lw $s1, 32($s2) 請將此MIPS指令轉為機器指令。
解:
lw為I-type,所以欄位對應為:
35(lw opcode為35) $s2 $s1 32(此為立即值)
將暫存器換成10進位編號:
35 18 17 32
轉成二進位:
100011 10010 10001 0000000000100000
3.
sll $t2, $s0, 4 請將此MIPS指令轉為機器指令(10進位即可)。
解:
sll為R-type,所以欄位對應為:
0 0(rs欄位並未用到) 16 10 4(左移4位元) 0