假定处理器正在执行以下指令:
lb $t3,-7($s0)
此外,假设以上指令位于地址0x004000f0
上,
寄存器$t3
包含值0x20040144
,而该寄存器$s0
包含值
0x305502db
。指令完成执行后,寄存器$t3
的值是什么?
根据我的计算:
指令的格式为:
lb RegDest, Offset(RegSource)
我们知道$s0
包含值0x305502db
,该值导致0x305502db - 7 = 0x305502d4
,并且该值将被加载到$t3
中。我现在在这里感到困惑,因为正确的答案是$t3 = unknown
,为什么呢?
答案 0 :(得分:0)
0x305502db - 7 = 0x305502d4
...因此,lb
指令将从地址0x305502d4
的内存(例如:RAM)中加载字节,对其进行符号扩展并将其写入寄存器$t3
如果RAM在地址0x5A
处包含值0x305502d4
,则$t3
将包含值0x0000005A
。如果它包含值0xA5
,则$t3
将包含值0xFFFFFFA5
。
...正确答案是
$t3 = unknown
,为什么?
您的练习不包含有关地址0x305502d4
上RAM内容的任何信息。
因此,您无法说出$t3
将包含哪个值。