mips軟體在為過程呼叫分配32個暫存器時遵循以下約定:
jal procedureaddress
其作用是:跳轉到某個位址的同時將下一條指令的位址儲存在暫存器$ra
(31號暫存器)中。
為了支援這種情況,類似mips的計算機使用了暫存器跳轉(jump register)指令jr
,用於case
語句,表示無條件跳轉到暫存器所指定的位址。
總結:呼叫者將引數儲存在$a0~$a3暫存器中,然後使用jal x
跳轉到過程x(被呼叫者),被呼叫者執行運算,將結果放在$v0~$v1,然後使用jr \$ra
指令將控制權返回給呼叫者。
解決辦法:
例子:
將下面c程式轉化為mips彙編
int leaf_example(int g, int h, int i, int j)
g, h, i, j, f,對應$a0,$a1, $a2, $a3, $s0.
addi $sp, $sp, -12
sw $t1,8($sp)
sw $t2,4($sp)
sw $s0,0($sp)
add $t0, $a0, $a1
add $t1, $a2, $a3
add $s0, $t0, $t1
add $v0, $s0, $zero
lw $s0, 0($sp)
lw $t0, 4($sp)
lw $t1, 8($sp)
addi $sp, $sp, 12
jr $ra
int fact(int n)
fact:
addi $sp, $sp, -8
sw $ra, 4($sp)
sw $a0, 0($sp)
slti $t0, $a0, 1
beq $t0, $zero, l1
addi $v0, $zero, 1
addi $sp, $sp, 8
jr $ra
l1: addi $a0, $a0, -1
jal fact
lw $a0, 0($sp)
lw $ra, 4($sp)
addi $sp, $sp, 8
mul $v0, $a0, $v0
jr $ra
計算機硬體組成
首先計算機的出現就是為了代替人力去工作 大前提 計算機的所有組成都是模仿人的某一器官或者是功能去設計的 控制器 是計算機的指揮系統,負責控制所有其他硬體執行的元件 相當於人類的大腦 運算器 負責數 算與邏輯運算 相當於人類大腦 儲存器訪問資料 記憶體 比如記憶體條 基於電訪問資料,斷電資料全部丟失 ...
計算機硬體組成
1.cpu 人體大腦 進行邏輯運算 排程其它裝置工作 大腦指揮腿手臂運動 2.記憶體條 人體臨時記憶 計算計把資料載入到記憶體中,然後和cpu排程工作 你把看到的東西進行臨時的記憶 把計算計的磁碟資料,臨時放在記憶體中處理 3.顯示卡 相當於人的眼睛看到且處理的美麗事物 處理計算機的圖形相關工作 5...
計算機組成原理 計算機硬體的基本組成
計算機這個概念實際上是個邏輯上的概念,只規定了機器的功能,並沒有規定我們要用什麼方法來做這個機器。比如之前的蒸汽計算機 機械計算機等,所以計算機不一定都是電子數字的。計算機硬體的發展 發展階段 時間邏輯元件 速度 次 秒 記憶體外存 第一代1946 1957 電子管幾千 幾萬 汞延遲線 磁鼓 穿孔卡...