web-dev-qa-db-ja.com

アセンブリのEAX、EBX、ECX ...でXはどういう意味ですか?

グーグルは結果を表示しません、

誰もが知っていますか?

22
Mask

Xはpairを意味し、少なくとも8080に戻ります。8ビットレジスタB、C、Dがありました。 、E、H、L(とりわけ)。ペア(BC、DE、HL)でも使用できます。 BCとDEのペアは、主に16ビット演算に使用されました。 HLペアは通常メモリアドレスを保持していました。 pairのXの使用例:

LXI  D,12ABH    ; "load pair immediate"
DCX  B          ; "decrement pair"
STAX D          ; "store A (indirect) at pair"

8086に早送りします。レジスタAL、AH、BL、BH、CL、CH、DL、DHがあり、8080と同様に、AX、BX、CX、DXのペアで使用できます。

他の人が指摘しているように、32ビットレジスタ名のEは、extendedを意味します。

35
I. J. Kennedy

私の知る限り、何もありません。汎用レジスタの略です。

16ビットAXレジスタは、AH(上位バイト)およびAL(下位バイト)としてアドレス指定できます。

EAXレジスタは、AXレジスタの32ビットバージョンです。 Eはextendedの略です。

9
Guffa

8086では、AXレジスタはAHとALの組み合わせでした。同様に、BXはBHやBLなどでした。80386では、16ビットレジスタを32ビットレジスタに結合するのではなく、Intelは各レジスタに16ビットを追加しました。 「AL」という名前は、最初の文字名のレジスタのビット0〜7を指し、「AH」はビット8〜15を指し、「AX」はビット0〜15を指します。 「EAX」という名前は、レジスタの32ビットすべてを指すようになりました。

他のほとんどの16ビットおよび32ビットプロセッサは、レジスタの上部または下部だけにアクセスする同等の手段を提供していないことに注意してください。ハードウェアの複雑さと命令エンコードビットの両方でこのようなアクセスを許可するコストはかなりのものであり、今日の時代では、レジスタの1つの8ビット部分を別のレジスタの8ビット部分に追加する機能ははるかに大きいです。そのようなハードウェアまたは命令エンコーディングスペースが置かれる可能性のある他の多くの用途よりも有用性は低くなります。一方で、そのような能力が存在する場合、それが役立つ場合もあります。

5
supercat

ミハイが言うように、それは単なる命名規則です。

ただし、「X」は「値を入力する」ためによく使用され、数学者が方程式の最初の変数名として一般的に使用し、これらの特定のレジスタが汎用である(ESPこれは拡張(32ビット)スタックポインタまたはEIP拡張命令ポインタです)これが、「B」と言うのではなくXが選択される理由です。

1
user257111

私が考えることができる1つの考えられる理由は、それが「正常な」状態ではないことを示すことです。電子機器のシリアル通信について話すとき、データラインの1つが何でもよい場合、その状態はXであると言うかもしれません。これは、0または1のどちらでもない/両方であるためです。

0
thecoshman