我的第一個問題是
調整的堆棧空間時,爲什麼數字8選擇?我假設它意味着8個字節,但是如何確定需要調整8個字節?我知道我們應該爲所有參數(在本例中爲一個參數)分配足夠的空間,我也在猜測返回地址,但我們怎麼知道每個人需要多少字節?
我試圖通過代碼閱讀理解發生了什麼,但我感到困惑的
BEQ $ T0,$零,L1。
我從這裏知道我們分支到它說L1的地方,其中n減1,然後我很困惑。是否
JAL其實
意味着我們立即返回到它在頂部說的事實,但這次與參數爲n = 1而不是n = 2? [假設n = 2是我們的原始論證]在什麼時候我們到達代碼中它說要乘以$ a0和$ v0?
我真的很難過,包紮着我的大腦。如果我已經理解了,每次調用階乘函數,都會在堆棧中添加一個新的「堆棧幀」...每個幀將8個字節分配到堆棧中?並且每個新框架都包含一個返回地址以返回到調用它的過程。如果我正確理解這一點,我很難在代碼中看到它。
如何把這裏的文字,而不是超大的圖像? – deviantfan