我正在尝试对从 mips 中的程序参数获得的二进制补码进行签名。我该怎么做?
问问题
1003 次
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 回答