看板 Grad-ProbAsk 關於我們 聯絡資訊
http://i.imgur.com/xLnb1sl.jpg http://i.imgur.com/HFWxazI.jpg 想請問各位高手兩個問題 首先是在assembly language中的第四行 為什麼要initialize return value? 另一個問題是 假設n=3最後回傳的答案應該會是6 可是我不知道該怎麼從assembly language得到答案6 謝謝各位大大了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.114.176 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1498640246.A.5C2.html
nakabin: a0就是n,把3代入a0 06/28 17:38
jaymimic: 我意思是不知道該怎麼trace.... 06/28 17:41
brilliantl: 可能要再仔細看一下前面的內容喔,return value要先放 06/28 18:45
brilliantl: 在v0這個register,等要return時,就可以被原function 06/28 18:45
brilliantl: 使用,沒記錯的話是這樣 06/28 18:45
TMDTMD2487: 初始化v0是因為他是return value, 你每次遞回都累加在 07/11 16:31
TMDTMD2487: 他身上,你先設0結果就不會對 07/11 16:31
TMDTMD2487: 打錯你不先設0就不會對 07/11 16:32
TMDTMD2487: 一開始把要保護住的值存到stack -> a0-1 -> jal sum 07/11 16:37
TMDTMD2487: 直到a0為0 07/11 16:37
TMDTMD2487: ao為0跳到return,此時把stack的東西拿出來,加到v0, 07/11 16:38
TMDTMD2487: 然後跳回return address 07/11 16:38
TMDTMD2487: 在妳做jal的時候會幫你把ra改成原來jal的下一行指令(p 07/11 16:40
TMDTMD2487: c+4 07/11 16:40
TMDTMD2487: 所以現在跳回到jal的下一行,把東西lw出來,stack清 07/11 16:41
TMDTMD2487: 掉,把值加上去,再一次ra 07/11 16:41