作者jojoboy0115 (jojo)
看板Grad-ProbAsk
標題[理工] 張凡 計組 28頁練習
時間Fri Jul 20 22:12:51 2018
https://imgur.com/cvU02Yj
題目如圖
請問在(1)時,
a.
lb $t0,0($t1)→這時候$t0的值是0x00000012
sw $t0,0($t2)→這時候0x10000010 地址的值就變成0x00000012
是這樣嗎?
我想問
b.
lb $t0,0($t1)→這時候$t0的值也是0x00000012
sb $t0,0($t2)→這時候0x10000010 地址的值為什麼就變成0x12FFFFFF ?
我看課本寫 sb(store byte) 指令會將所指定暫存器最右邊的位元組存入記憶體
怎麼會出現FF? 如果是題目上 Assume that the memory..... $t2
is initialized to 0xFFFFFFFF 那在 a.的時候的值 為什麼不是 0xFFFFFF12?
再麻煩各位先進解答疑惑,先謝謝大家~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.224.101.19
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1532095974.A.FD8.html
→ y2j60537: a是sw 一次store一個word(4個byte) 所以ffffffff會被覆 07/20 22:30
→ y2j60537: 蓋過去 b則是sb 一次store一個byte 所以會將最右邊的 07/20 22:30
→ y2j60537: 一個byte:12 存入t2 一樣遵守big endian 所以t2記憶體 07/20 22:30
→ y2j60537: 位置最小的byte:最左邊的ff 會被12覆蓋 07/20 22:30
推 hamt5821: 因為sb只寫入了一個byte啊 07/20 22:38
推 EXPCDR: a.對的是這樣。b.因為a的sw是一次放一個word也就是4個byt 07/21 08:09
→ EXPCDR: es所以將暫存器的16進位8個數字全數放入記憶體位址0x1000 07/21 08:09
→ EXPCDR: 0010因而將原記憶體內容全部覆蓋 07/21 08:09
→ jojoboy0115: 謝謝樓上各位的解說! 07/23 20:44
推 ironkkai: (2)a.有打錯嗎?是0x00000080嗎 07/28 19:04