[理工] 計組(96交大資聯)

看板Grad-ProbAsk作者 (郭台銘只會作秀&打嘴炮)時間15年前 (2009/03/20 20:01), 編輯推噓0(004)
留言4則, 1人參與, 最新討論串1/1
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

03/20 20:35, , 1F
這是他們學校的期中考古題
03/20 20:35, 1F

03/20 20:36, , 2F
大概就是因為recursive call本身為caller也為callee
03/20 20:36, 2F

03/20 20:37, , 3F
所以需要保存ra(return address),a0(function argument)
03/20 20:37, 3F

03/20 20:37, , 4F
所以stack先-8開出空間, 再存這兩個值就可以囉
03/20 20:37, 4F
文章代碼(AID): #19muM2OE (Grad-ProbAsk)