1

我想使用 MIPS 指令集进行一些字节操作。

  • 我有 register $S0which has0x8C2E5F1E和 register $S1which has 0x10AC32BB
  • 我想将 , 的第二个字节存储到$S0,5F的第三个字节$S1AC

我的逻辑是将寄存器的字节存储$S0到另一个寄存器中,将其转移到所需的字节。然后我会和$S1注册0xFF00FFFF。最后,我将只是或两个寄存器。听上去怎么样?这是对的吗?有更好的办法吗?

任何建议或解决方案将不胜感激。

4

2 回答 2

1

对于第 2 版及更高版本,MIPS 包括一个插入位字段指令,该指令从一个寄存器的最低有效位开始,并将它们放入第二个寄存器的指定范围内。因此,您的字节插入可以通过以下方式执行:

// rotating right one byte rather than shift to preserve data
// without using an additional register
ROTR $S0, $S0, 8;
// insert LSbits from $S0 into $S1 starting at bit 16
// with size of 8 bits
INS $S1, $S0, 16, 8;
于 2013-11-15T16:15:21.017 回答
1

考虑以下:

ori $t0 $s0 0xFF00 #extract byte 2
sll $t0 $t0 8 #shift to third byte

#create mask to clear third byte
lui  $t1 0xFF 
not  $t1 $t1

and  $s1 $s1 $t1 #clear third byte
or   $s1 $s1 $t0 #set third byte
于 2013-11-15T02:37:58.207 回答