[理工] 张凡 计组 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