看板 Grad-ProbAsk 關於我們 聯絡資訊
http://photo.pchome.com.tw/871011tin/123755017965/ 題目程式碼如下 fact: L1: addi $sp,$sp,-4 addi $a0,$a0,-1 sw $ra,0($sp) jal fact slti $t0,$a0,1 lw $ra,0($sp) beq $t0,$zero,L1 addi $sp,$sp,4 addi $v0,$zero,1 mul $v0,$a0,$v0 addi $sp,$sp,4 jr $ra jr $ra 答案如下 fact: L1: addi $sp,$sp,-8 addi $a0,$a0,-1 sw $ra,4($sp) jal fact sw $a0,0($sp) lw $a0,0($sp) slti $t0,$a0,1 lw $ra,4($sp) beq $t0,$zero,L1 addi $sp,$sp,4 addi $v0,$zero,1 mul $v0,$a0,$v0 addi $sp,$sp,4 jr $ra jr $ra 有人可以教我這一題怎麼解的嗎= =?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.139.62.215
colkyo:這是他們學校的期中考古題 03/20 20:35
colkyo:大概就是因為recursive call本身為caller也為callee 03/20 20:36
colkyo:所以需要保存ra(return address),a0(function argument) 03/20 20:37
colkyo:所以stack先-8開出空間, 再存這兩個值就可以囉 03/20 20:37