MIPS Assembly Language MIPS組合語言
常用語法:
| 功能 | 用法 | 解釋 |
|---|---|---|
| 加法 | add $t0, $s1, $s2 | $t0 = $s1 + $s2 |
| 減法 | sub $t0, $s1, $s2 | $t0 = $s1 - $s2 |
| 加(減)常數 | addi $t0, $s1, 3 | $t0 = $s1 + 3 |
| 載入字組 | lw $t0, 4($s1) | $t0 = Memory[$s1 + 4] |
| 儲存字組 | sw $t0, 4($s1) | Memory[$s1 + 4] = $t0 |
| 左移 | sll $t0, $s1, 2 | $t0 = $s1 << 2 |
| 右移 | srl $t0, $s1, 2 | $t0 = $s1 >> 2 |
| 判斷相等 | beq $t0, $s1, ELSE | if($t0 == $s1)則前往ELSE |
| 判斷不相等 | bne $t0, $s1, ELSE | if($t0 != $s1)則前往ELSE |
| 判斷小於 | slt $t0, $s1, $s2 | if($s1 < $s2)則$t0 = 1 |
| 暫存器跳躍 | jr $ra | 前往$ra(後面解釋) |
| 跳躍並且連結 | jal temp | 前往temp並且執行下一行 |
常用暫存器:
| 名稱 | 編號 | 用途 |
|---|---|---|
| $s0 ~ $s7 | 16 ~ 23 | 保留暫存器 |
| $t0 ~ $t7 | 8 ~ 15 | 臨時暫存器 |
| $v0 ~ $v1 | 2 ~ 3 | 傳回值暫存器 |
| $a0 ~ $a3 | 4 ~ 7 | 參數暫存器 |
| $sp | 29 | 堆疊指標 |
| $ra | 31 | 程式返回位置 |
MIPS定址模式:
1. 立即定址(immediate addressing):運算元為一個暫存器中的值。
2. 基底或位移定址法(base or displacement addressing):運算元位址加上指令中的常數。
3. PC相對定址法(PC-relative addressing):分支位址為PC(Programe Counter)加上指令中的常數。
4. 虛擬直接定址法(pseudodirect addressing):跳躍位址為指令中的26個位元再於其前串加上PC的高位位元。