[理工] 張凡 計組 28頁練習

作者: jojoboy0115 (jojo)   2018-07-20 22:12:51
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?
再麻煩各位先進解答疑惑,先謝謝大家~
作者: y2j60537 (skkkkuu)   2018-07-20 22:30:00
a是sw 一次store一個word(4個byte) 所以ffffffff會被覆蓋過去 b則是sb 一次store一個byte 所以會將最右邊的一個byte:12 存入t2 一樣遵守big endian 所以t2記憶體位置最小的byte:最左邊的ff 會被12覆蓋
作者: hamt5821 (blurblur)   2018-07-20 22:38:00
因為sb只寫入了一個byte啊
作者: EXPCDR (EXPCDR)   2018-07-21 08:09:00
a.對的是這樣。b.因為a的sw是一次放一個word也就是4個bytes所以將暫存器的16進位8個數字全數放入記憶體位址0x10000010因而將原記憶體內容全部覆蓋
作者: jojoboy0115 (jojo)   2018-07-23 20:44:00
謝謝樓上各位的解說!
作者: ironkkai (哥就是凱)   2018-07-28 19:04:00
(2)a.有打錯嗎?是0x00000080嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com