MIPS體系結構剖析,32個通用寄存器
mips彙編有個約定(後來也有些變化,我們不管,o32,n32),32個通用寄存器不是一視同仁
的,而是分成下列部分:
寄存器號 符號名 用途
0 始終爲0 看起來象浪費,其實很有用
1 at 保留給彙編器使用
2-3 v0,v1 函數返回值
4-7 a0-a3 前頭幾個函數參數
8-15 t0-t7 臨時寄存器,子過程可以不保存就使用
24-25 t8,t9 同上
16-23 s0-s7 寄存器變量,子過程要使用它必須先保存
然後在退出前恢復以保留調用者需要的值
26,27 k0,k1 保留給異常處理函數使用
28 gp global pointer;用於方便存取全局或者靜態變量
29 sp stack pointer
30 s8/fp 第9個寄存器變量;子過程可以用它做frame pointer
31 ra 返回地址
硬件上這些寄存器並沒有區別(除了0號),區分的目的是爲了不同的編譯器產生的代碼可以通用。
的,而是分成下列部分:
寄存器號 符號名 用途
0 始終爲0 看起來象浪費,其實很有用
1 at 保留給彙編器使用
2-3 v0,v1 函數返回值
4-7 a0-a3 前頭幾個函數參數
8-15 t0-t7 臨時寄存器,子過程可以不保存就使用
24-25 t8,t9 同上
16-23 s0-s7 寄存器變量,子過程要使用它必須先保存
然後在退出前恢復以保留調用者需要的值
26,27 k0,k1 保留給異常處理函數使用
28 gp global pointer;用於方便存取全局或者靜態變量
29 sp stack pointer
30 s8/fp 第9個寄存器變量;子過程可以用它做frame pointer
31 ra 返回地址
硬件上這些寄存器並沒有區別(除了0號),區分的目的是爲了不同的編譯器產生的代碼可以通用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.