我即将进行考试,练习题之一是:
假使,假设$t0
包含值0x12121212
and $t1
包含
地址0x1000000
.
假设内存数据,从地址开始0x1000000
is:
88 77 66 55
.
会有什么价值$t0
执行以下代码后:
lb $t0, 0($t1)
a) 0x00000088
b) 0x88121212
c) 0xffffff88
d) 0x12121288
我给出的答案是a
,因为该字节lb
指令将读取(根据我对指令作用的理解)是 88。然后 88 将存储在$t0
,因此该值将是0x00000088
。但给出的答案是c
。我觉得我对如何做有一个根本性的误解lb
有效 - 有人可以解释一下为什么答案是这样吗c
?
答案是c) 0xffffff88
. The lb
指令将字节符号扩展为 32 位值。 IE。最高有效位 (msb) 被复制到高 24 位。
0x88 == 0b10001000,即最高有效位为1。因此高24位将为0b111111111111111111111111 == 0xffffff。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)