8

ほとんどのアセンブリプログラムは4つの汎用レジスタを使用しますが、スタックをeax ebx ecx edx何度も移動することなくタスクを簡単に実行するには、4つ以上のレジスタを使用する必要があることがよくあります。私のプログラムは、浮動小数点計算またはそれらの「意図された使用」のためにFPUまたはMMXレジスタを使用する意図がないので、プログラムでこれらの追加のレジスタを使用することは許容できると考えられますか?pushpop

例えば。xmm0ループインクリメントカウンタを使用して、ecxレジスタを解放して他のことを実行します。

4

3 に答える 3

1

レジスタの 32 ビット全体が必要になる頻度はどれくらいですか? 小さなカウンターのようなものについては、汎用レジスターのバイトサイズの 4 分の 1 を自由に使用してください: AH/AL、BH/BL、CH/CL、DH/DL。いくつかのビット単位のトリックを使用すると、汎用レジスタの上位 16 ビットを、ワード サイズの変数の中間ストレージとして使用することもできます。

リアルモード (読み取り: DOS の下) では、セグメントレジスタ ES、FS、および GS を中間値の格納に使用することもできます。ただし、プロテクト モードの OS (Windows、Linux、*nix) ではコードがクラッシュします。

于 2013-02-25T02:40:19.027 に答える
-2

もちろん、SI と DI もあり、x64 では追加のレジスタがありますが、FP レジスタは必要に応じて使用できます。

于 2013-02-23T05:57:25.960 に答える