推 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