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

时间:2015-05-31 19:42:57

标签: assembly mips

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

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

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

  2. 如果Sr2

  3. ,则在程序结束时Sr2=0xfffffff5中存储的值是多少?

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

1 个答案:

答案 0 :(得分:0)

现在已经很晚了,所以请耐心等待。

函数增量x,如果是负数

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

第一个指令集$r1到值0x80000000,它是一个位掩码。这使用了$0始终为0的事实,因此$r1 = 0 + 0x80000000 = 0x80000000

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

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

最后一条指令增量x仅在x为负时执行。

如果$r2 = 0xfffffff5x-11(再次为两个补码)  因此,函数x-10$r2 = 0xfffffff6

注意:要转换为和来自两个补码而不是数字并添加一个。