私は MIPS の除算について読んでいて、その div を見つけました
$s を $t で割り、商を $LO に、余りを $HI に格納します。
そしてウィキペディアによると
HI および LO は、mfhi (上位からの移動) および mflo コマンドによってアクセスされる乗算器/除算器の結果にアクセスするために使用されます。
http://en.wikipedia.org/wiki/MIPS_architecture
HIとLOレジスタですか?それらは何番目のレジスタですか?
私は MIPS の除算について読んでいて、その div を見つけました
$s を $t で割り、商を $LO に、余りを $HI に格納します。
そしてウィキペディアによると
HI および LO は、mfhi (上位からの移動) および mflo コマンドによってアクセスされる乗算器/除算器の結果にアクセスするために使用されます。
http://en.wikipedia.org/wiki/MIPS_architecture
HIとLOレジスタですか?それらは何番目のレジスタですか?
これらは、乗算と除算の結果を格納するために使用される特別なレジスタです。$0 .. $31これらは汎用レジスタとは別のもので、直接アドレス指定できません。それらの内容には、特別な命令mfhiとmflo(Move From HI/LO) を使用してアクセスします。
これらは乗算ユニットにあり、それぞれ 32 ビットです。詳細はこちら。ペアとして、32x32 ビット整数の 64 ビット完全な結果を保持しますmult。
Raymond Chen のブログ記事The MIPS R4000, part 3: Multiplication, Division, and the Tempamental HI and LO registerには、以前の/を(それぞれ)無効にするmtlo/を含む、初期の MIPS の非直感的な動作に関する非常に良い情報があります。mtlohilo
初期の MIPS の不完全な整数命令セットのリファレンス (質問にリンクされています) にも詳細があります。 http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html、または MIPS の公式 PDF を参照してください。マニュアル、または従来の MIPS CPU のマニュアルの PDF。
HI と LO は番号付きレジスタではありません (IIRC)。これらは、1 つのレジスタに収まらない演算の結果を格納するためにのみ使用されます (たとえば、2 つの 32 ビット整数を乗算すると 64 ビット整数になる可能性があるため、オーバーフローは HI に入ります)。
編集:このクラスの説明によると、それらは実際には特殊なレジスタであるため、番号が付けられておらず、特殊なコマンドを使用してのみアクセスできます。