MIPS:加载字节指令

时间:2019-05-30 18:42:03

标签: assembly mips

假定处理器正在执行以下指令:

lb $t3,-7($s0)

此外,假设以上指令位于地址0x004000f0上, 寄存器$t3包含值0x20040144,而该寄存器$s0包含值 0x305502db。指令完成执行后,寄存器$t3的值是什么?

根据我的计算:

指令的格式为:

lb RegDest, Offset(RegSource)

我们知道$s0包含值0x305502db,该值导致0x305502db - 7 = 0x305502d4,并且该值将被加载到$t3中。我现在在这里感到困惑,因为正确的答案是$t3 = unknown,为什么呢?

1 个答案:

答案 0 :(得分:0)

  

0x305502db - 7 = 0x305502d4

...因此,lb指令将从地址​​0x305502d4的内存(例如:RAM)中加载字节,对其进行符号扩展并将其写入寄存器$t3

如果RAM在地址0x5A处包含值0x305502d4,则$t3将包含值0x0000005A。如果它包含值0xA5,则$t3将包含值0xFFFFFFA5

  

...正确答案是$t3 = unknown,为什么?

您的练习不包含有关地址0x305502d4上RAM内容的任何信息。

因此,您无法说出$t3将包含哪个值。