MIPS彙編 MIPS32中通用暫存器的使用約定

2021-08-02 11:40:19 字數 1079 閱讀 1807

這段時間一直在學習mips32彙編。

mips32並沒有強制指定通用暫存器的使用規則(除了0號暫存器始終為0,比較特殊),但是在實際使用中大家都會遵循一系列的約定。這裡以**的方式予以展示,當作是做個筆記,方便自己以後回看。

名稱暫存器號

用途呼叫時是否儲存

$zero

0常數0

不適用$v0~$v1

2~3計算結果和表示式求值

否$a0~$a3

4~7引數

否$t0~$t7

8~15

臨時變數

否$s0~$s7

16~23

儲存的暫存器

是$t8~$t9

24~25

更多臨時變數

否$gp

28全域性指標

是$sp

29棧指標

是$fp

30幀指標

是$ra

31返回位址是

摘自《計算機組成與設計:硬體/軟體介面》

暫存器名字

約定命名

用途$0

zero

總是為0

$1at

留作彙編器生成一些合成指令

$2、$3

v0、v1

用來存放子程式返回值

$4~$7

a0~a3

呼叫子程式時,使用這4個暫存器傳輸前4個非浮點引數

$8~$15

t0~t7

臨時暫存器,子程式使用時可以不用儲存和恢復

$16~$23

s0~s7

子程式暫存器變數,改變這些暫存器值的子程式必須儲存舊的值並在退出前恢復,對呼叫程式來說值不變

$24、$25

t8、t9

臨時暫存器,子程式使用時可以不用儲存和恢復

$26、$27

k0、k1

由異常處理程式使用

$28gp

全域性指標

$29sp

堆疊指標

$30fp

子程式可以用來作堆疊幀指標

$31ra

存放子程式返回位址

摘自《自己動手寫cpu》

Debian 8 5配置mips 32位編譯環境

1.首先新增toolchain環境變數 每乙個開發平台所需要用到的交叉編譯鏈結工具不一樣,新增到系統 etc profile即可 su進入root,執行 vi etc profile 在最後新增 export path path usr bin 新增完成後執行 source etc profile ...

mips彙編列印 hello world

mips組合語言列印 hello world 字串。已在pcspim下編印通過 print hello world programed by stevie zou text segment text globl main main la a0,str a0儲存要列印字元的位址 li v0,4 為sy...

MIPS彙編小貼示

各欄位含義 op 指令基本操作,稱為操作碼。rs 第乙個源運算元暫存器。rt 第二個源運算元暫存器。rd 存放操作結果的目的運算元。shamt 位移量 funct 函式,這個字段選擇op操作的某個特定變體。有32個通用暫存器,0到 31 0 即 zero,該暫存器總是返回零,為0這個有用常數提供了乙...