[理工] 計組Assembly language請教

看板Grad-ProbAsk作者 (Chichi)時間6年前 (2017/06/28 16:57), 編輯推噓5(5011)
留言16則, 4人參與, 最新討論串1/1
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

06/28 17:38, , 1F
a0就是n,把3代入a0
06/28 17:38, 1F

06/28 17:41, , 2F
我意思是不知道該怎麼trace....
06/28 17:41, 2F

06/28 18:45, , 3F
可能要再仔細看一下前面的內容喔,return value要先放
06/28 18:45, 3F

06/28 18:45, , 4F
在v0這個register,等要return時,就可以被原function
06/28 18:45, 4F

06/28 18:45, , 5F
使用,沒記錯的話是這樣
06/28 18:45, 5F

07/11 16:31, , 6F
初始化v0是因為他是return value, 你每次遞回都累加在
07/11 16:31, 6F

07/11 16:31, , 7F
他身上,你先設0結果就不會對
07/11 16:31, 7F

07/11 16:32, , 8F
打錯你不先設0就不會對
07/11 16:32, 8F

07/11 16:37, , 9F
一開始把要保護住的值存到stack -> a0-1 -> jal sum
07/11 16:37, 9F

07/11 16:37, , 10F
直到a0為0
07/11 16:37, 10F

07/11 16:38, , 11F
ao為0跳到return,此時把stack的東西拿出來,加到v0,
07/11 16:38, 11F

07/11 16:38, , 12F
然後跳回return address
07/11 16:38, 12F

07/11 16:40, , 13F
在妳做jal的時候會幫你把ra改成原來jal的下一行指令(p
07/11 16:40, 13F

07/11 16:40, , 14F
c+4
07/11 16:40, 14F

07/11 16:41, , 15F
所以現在跳回到jal的下一行,把東西lw出來,stack清
07/11 16:41, 15F

07/11 16:41, , 16F
掉,把值加上去,再一次ra
07/11 16:41, 16F
文章代碼(AID): #1PKszsN2 (Grad-ProbAsk)