有人可以告诉我如何解决它,以及如何学习它

Can somebody tell me How , i can solve it , and how i can learn it

假设以下程序 运行 在 32 位小端 MIPS 处理器中

addi sr1. sr0, 0x80000000
and  sr3, sr2, sr1
beq  sr3, sr0, end 
addi sr2, sr2, 1

end:
  1. 注册sr2存储x,一个带符号的整数。用高级语言编写的程序执行的功能是什么?

  2. 如果Sr2=0xfffffff5

  3. ,程序结束时Sr2中存储的值是多少

请有人告诉我,我可以从哪里开始学习或任何书籍?

这里已经很晚了,所以对此持保留态度。

函数递增 x 如果它是负数

int unknown(int x) { return x<0 ? ++x : x;}

第一条指令将$r1设置为值0x80000000,即位掩码。这利用了 [=13=] 总是 0 的事实,所以 $r1 = 0 + 0x80000000 = 0x80000000

第二条指令将$r2x值)与$r1(位掩码)相加,并将结果存储在$r3中。此结果为 0x80000000 当且仅当 x 为负数(参见双补码格式)否则为零。

如果$r3为零,即如果x为正数或零,则第三条指令跳转到末尾。

最后一条指令递增x,仅当x为负时才执行。

如果$r2 = 0xfffffff5那么x就是-11(又是二补)。
所以在函数 x 之后是 -10 等等 $r2 = 0xfffffff6.

注意:转换为两个补码而不是数字加一。