如何对以mips(程序集)的程序参数给出的二进制补码号进行符号扩展

时间:2018-08-22 06:22:41

标签: assembly binary mips twos-complement sign-extension

我试图对从mips程序参数中获得的二进制补码进行符号扩展。我该怎么办?

1 个答案:

答案 0 :(得分:1)

一种方法是利用MIPS sra指令,该指令执行arithmetic right shift-它在向右移位寄存器的同时移入符号位。
通过使用sll将8位值放在最左边(在最高有效位置读取),我们使它的符号位与寄存器符号位重合,然后使用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相反)。


release 2 of the MIPS32 ISA开始,seb rt, rs指令对GP寄存器的最低有效字节进行符号扩展。