天天看點

基于MIPS的計算機指令學習(2)——三類操作數第1類操作數:寄存器 第2類操作數:立即數第3類操作數:主存單元

第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。

繼續閱讀