作者NTUSTCSIE (郭台銘只會作秀&打嘴炮)
看板Grad-ProbAsk
標題[理工] 計組(96交大資聯)
時間Fri Mar 20 20:01:00 2009
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