mips 从寄存器中提取某些位并将它们设置到同一位置的不同寄存器而不更改其余位
mips extract certain bits from register and set them to a different register in the same place without changing the rest
我正在尝试从寄存器 $t0 中提取位 15 到 31,并将它们设置到寄存器 $t1 中的相同位置。
我怎样才能用最少的指令做到这一点?
在基本层面上,您可以通过将寄存器与要忽略旧值的 0 和要尊重旧值的 1 相与来从寄存器中获取某些位的值。
如果您想随后将其与来自另一个输入的位组合,请在第二个输入上执行相同的技术,在您和它们的值上使用相反的 1 和 0。然后,将两个结果值相加。
例如(伪,用值而不是寄存器):
AND 0001010101 0000001111 = 0000000101
AND 1101101101 1111110000 = 1101100000
ADD 1101100000 0000000101 = 1101100101
我正在尝试从寄存器 $t0 中提取位 15 到 31,并将它们设置到寄存器 $t1 中的相同位置。
我怎样才能用最少的指令做到这一点?
在基本层面上,您可以通过将寄存器与要忽略旧值的 0 和要尊重旧值的 1 相与来从寄存器中获取某些位的值。
如果您想随后将其与来自另一个输入的位组合,请在第二个输入上执行相同的技术,在您和它们的值上使用相反的 1 和 0。然后,将两个结果值相加。
例如(伪,用值而不是寄存器):
AND 0001010101 0000001111 = 0000000101
AND 1101101101 1111110000 = 1101100000
ADD 1101100000 0000000101 = 1101100101