【发布时间】:2016-09-17 15:57:15
【问题描述】:
这 3 个问题是我在课堂上唯一没听懂的问题。我的教授很糟糕,在解释材料时根本不清楚,这就是我必须来这里的原因。我有一些答案,但我不知道他们是否正确。非常感谢您,非常感谢您花时间阅读。
- 给出汇编指令以便:
a) 仅使用逻辑移位来隔离 $s0 中单词的字节 1。
b) 对寄存器 $t0 的低 12 位进行补码,但保持所有其他位不变。如果可能,请使用立即格式指令。如果不能使用立即格式指令,请解释原因并改用屏蔽寄存器。
c) 屏蔽 R-Format 指令的移位量并清除其余位。如果可能,请使用立即格式指令。如果不能使用立即格式指令,请解释原因并改用掩码寄存器。
- 此代码用于问题 2a
循环: slt $t2, $t0, $t0
bne $t2, $zero, loop
j done
完成:
a) bne的地址是400,给出它的目标地址。
- 给定汇编指令 beq $t1, $t2, Next
a) 如果指令的地址是 800 字节并且 Next 在目标地址 680 字节。指令二进制表示的偏移字段的值是多少?以十进制和二进制给出偏移值。
我的回答:
1a。 sll $t0, $s0, 16 srl $t1, $t0, 24
b. xori(无法弄清楚其余的)
c。安迪 $t0, $s1, 0x07c0
2a。 424 (400 + 4) + (4 * 3) = 416
b.
3a。我认为你必须做800-680,但我不确定。我所知道的是,当以二进制形式写入时,偏移值必须为 16 位。
【问题讨论】:
-
有免费的 MIPS 模拟器,如 SPIM 和 MARS,您可以使用它们来验证您的答案。
-
我明白了。但我想知道如何手工而不是使用模拟器。