作者doubleday (......)
看板Grad-ProbAsk
標題Re: [理工] [計組]-mips 組語
時間Thu Jan 7 13:02:13 2010
※ 引述《NOtWorThy ()》之銘言:
: 假設 $t1:0x1000 0000
: $t2:0x1000 0100 假設位址0x1000 0100存0xFFFF FFFF
: a) b)
: lb $t0, 0($t1) lb $t0, 0($t1)
: sw $t0, 0($t2) sb $t0, 0($t2)
: 1)假設位址0x1000 0000存12 34 56 78
: 問執行完少面兩道指令後$t2值是多少?
: ans: a) 0x0000 0012 //why not 0x0000 0078 ?
: b) 0x12FF FFFF //why not 0xFFFF FF78 ?
: 煩請高手賜教
: 感激不盡~!
我的想法
a.
位址t1:0x1000 0000存12 34 56 78
t1位址 0 1 2 3
內容 12 34 56 78
lb 之後 t0 = 12
由於sw指令是儲存一個字組所以要補0(載入是byte儲存是word)
b.
位址t2:0x1000 0100存FF FF FF FF
t2位址 0 1 2 3
內容 FF FF FF FF
lb 之後 t0 = 12
因為sb指令是儲存一個byte,所以直接寫入即可(載入是byte儲存也是byte)
有錯請指教:)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.40.115.180
→ NOtWorThy:感激 瞭解了 所以這跟ENDIAN也有關囉 ?! 01/07 14:04
推 hayouj2000:不太懂~為什麼第一題不是0012FFFF 01/08 00:32
→ hayouj2000:可以再說的更詳細一點嗎 01/08 00:32
回NOtWorThy
我是照著寫組語的觀念去解,倒是沒考慮跟ENDIAN有沒有關
補充a小題
lb 之後 t0 = 12 (t0存的是byte格式)
sw是儲存一個word指令
因此需要將t0先擴展成word,再存入t2的位址
4個byte = 1個word
byte: 12
word: 00 00 00 00 12
寫入t2
前: t2位址 0 1 2 3
內容 FF FF FF FF
後: t2位址 0 1 2 3
內容 00 00 00 12
若結果為 00 12 FF FF(只有寫入2byte=半word),則不符合sw指令
以上有錯請指教:)
※ 編輯: doubleday 來自: 114.40.119.163 (01/08 10:42)