1

MIPS 命令セットを使用してバイト操作を行いたいと考えています。

  • を持っているレジスタ$S0と を持っている0x8C2E5F1Eレジスタ$S1があります0x10AC32BB
  • $S0の 2 バイト目を5Fの 3 バイト目$S1に格納したいと思いACます。

私のロジックは、レジスタのバイトを別のレジスタに格納し、$S0それを目的のバイトにシフトすることです。次に、に登録$S10xFF00FFFFます。最後に、1 つまたは 2 つのレジスタを使用します。それはどのように聞こえますか?それが正しいか?もっと良い方法はありますか?

任意の提案や解決策をいただければ幸いです。

4

2 に答える 2

1

リリース 2 以降では、MIPS には Insert Bit Field 命令が含まれています。この命令は、1 つのレジスタの最下位ビットから始まり、2 番目のレジスタの指定された範囲に配置されます。したがって、バイト挿入は次のように実行できます。

// 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 に答える