想問一個有關組合語言的問題

想要請問一下當程式要轉成組合語言的時候

例如 g = h + A[8];
起始位址是存在$s3 且g,h變數儲存在$s1,#s2暫存器中
那組合語言就會是

lw $t0, 32($s3)
add $s1,$s2,$t0

想問說當中的32 是因為A[8] 當中的8是一個WORD嗎?
然後要轉成byte是這樣嗎? 但是那個8不是常數嗎?

另一個就是

switch ( k ) {
case0: f = i + j ;
case1: f = g + h ;
case2: f = g - h ;
case3: f = i - j ;
}
其中變數f, g, h, i, j, k 對應到$s0, $s1, $s3, $s4, $s5暫存器
且$t2暫存器為4 那轉成組合語言是

slt $t3, $s5, $Zero
bne $t3, $Zero,Exit
slt $t3, $s5, $t2
beq $t3, $Zero,Exit

add $t1, $s5, $s5
ass $t1, $t1, $t4
.................
.................略

主要是想問說為什麼這一個部份的參數K也要乘上4倍?
第一個範例部份不是因為要找到主記憶體上的正確位址所以才要乘上4倍(轉成byte)
但是第二個程式部份的參數並不需要從記憶體中取出資料 為什麼也要乘上四倍?

請高手解惑小弟也 >"<
2008-08-23 21:32 發佈
文章關鍵字 組合語言 問題
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?