看板 Grad-ProbAsk 關於我們 聯絡資訊
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