0

我正在尝试对从 mips 中的程序参数获得的二进制补码进行签名。我该怎么做?

4

1 回答 1

1

一种方法是利用 MIPSsra指令,该指令执行算术右移- 它在移入符号位的同时右移一个寄存器。
通过将 8 位值放在最左边(在最高有效位置读取),sll我们使其符号位与寄存器符号位一致,然后我们使用sra

#Assume $a0 is a) 0x40 b) 0x80
sll $a0, $a0, 24      #a) $a0 = 0x40000000 b) $a0 = 0x80000000
sra $a0, $a0, 24      #a) $a0 = 0x00000040 b) $a0 = 0xffffff80

对于内存中的值,lb将加载扩展它的字节符号(与 相反lbu)。


MIPS32 ISA 第 2 版seb rt, rs以来,对 GP 寄存器的最低有效字节进行符号扩展的指令 。

于 2018-08-22T07:45:32.510 回答