頁:
[1]
組合語言的問題
本帖最後由 b2581167 於 2017-10-9 10:32 PM 編輯我現在在看conupter organization and design
有兩個讓我疑惑的問題
第一是這兩個題目的比較
一、假設A為含有100個word的Array,且compiler 已如前述將g與h存於s1及s2中。
Array起始位址存於s3中。c語言敘述為:g=h+A;翻成組合語言是...
lw t0,8(s3)
add s1,s2,t0
二、設變數h存於s2中且陣列A的起始位址存在s3中。
c語言敘述為:A=h+A;翻成組合語言是...
lw t0,32(s3)
add t0,s2,t0
sw t0,48(s3)
問題一:這兩個答案的解法讓我困惑,理論上兩邊的答案lw的地方,
不都要是 lw t0,32(s3)才對嗎?為什麼一個是word一個是byte。
那這樣如果用lh、lb又該怎麼表示?
問題二:在書上我有看到在procedure call時,tX不會被保存,sX的會被保存,
可是在procedure call的時候,值會不會被保存,不是跟程式設計有關嗎,
關tX與sX本身會不會被保存有甚麼關聯。
例如:我今天caller他有s0、s1、t0、t1的值不能被callee重寫,
所以我會用sp來本這些值存起來,假如callee使用了s0s1s2、t0t1t2,
結束以後回到caller,s0、s1、t0、t1的原值都一樣會被保存,
所以有沒有保存不是設計師在決定的嗎?
是我哪裡搞錯了嗎@@
PS:順便問一個腦腦的問題,
$ra的全寫是return address,
$sp的全寫是stack pointer,
那$s跟$t的全寫是甚麼??
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>
頁:
[1]