第1類操作數:寄存器
MIPS給寄存器堆中的每個寄存器配置設定了一個名稱,并通過名稱配置設定規範了寄存器的用法
$0: 常數0
$s0~$s7: 程式員變量
int a,b,x;
x = a + b;
add $s0,$s1,$s2
$t0~$t7:臨時變量
int a,b,c,d,x;
x = a + b + c + d;
不難發現,add隻能一次計算兩個變量,需要用3個add指令才能解決這個問題
add $t0,$s1,$s2
add $t1,$s3,$s4
add $s0,$t0,$t1
$t0、$t1兩個變量并非程式員所定義,其用途僅僅是儲存表達式計算過程中産生的臨時結果,當計算完成,這兩個量就完全沒意義了。一般将這樣的量稱為臨時變量。
第2類操作數:立即數
int x,a;
x = a + 8;
addi $s3,$s4,8
對涉及立即數的運算,MIPS指令系統通常會在指令最後增加字母i(immediate)
第3類操作數:主存單元
CPU要對主存單元進行讀寫,故主存單元也是一類操作數
尋址:基位址+偏移量(類比數組)
任意一個主存單元的位址都可以用base+offset來表示。
如
lw $t0,32($s2)
$s2 為base,32為offset。