MIPS程序设计

MIPS程序设计,mips,Mips,我对大学过去的一篇论文中的一个问题感到非常困惑。详情如下: 执行以下MIPS后,寄存器$s1中的值是多少 汇编代码 li $t0, 0x1 li $s0, 0x0 li $s1, 0xa5a5a5a5 loop: and $t1, $t0, $s1 beq $t1, $zero, skip addi $s0, $s0, 1 skip: sll $t0, $t0, 1 # Shift left logical bne $t0,

我对大学过去的一篇论文中的一个问题感到非常困惑。详情如下:

执行以下MIPS后,寄存器$s1中的值是多少 汇编代码

      li $t0, 0x1
      li $s0, 0x0
      li $s1, 0xa5a5a5a5
loop: and $t1, $t0, $s1
      beq $t1, $zero, skip
      addi $s0, $s0, 1
skip: sll $t0, $t0, 1 # Shift left logical
      bne $t0, $zero, loop
(a) 0x10

(b) 0xA5A5

(c) 0x0

(d) 0x5A5A

(e) 0x1

给出的答案是A——据我所知,s1美元的价值在最初申报后没有改变——那么情况如何呢?我原以为是B?

这显示了QTSpim:

这显示了PCSpim:


是的,给出的答案是B,因为,
$s1
仅用于在
$s1
$t0
之间进行
操作,
$s1
没有改变。意识到我做了一些愚蠢的事情-给出的“正确”答案实际上是A。但肯定是B,对吗?也许是考试中的一个输入错误,这个问题应该是问
$s0
的最终值(看起来应该是0x10)?