web-dev-qa-db-ja.com

Intel 32ビットおよび64ビットレジスタの名前でEおよびRプレフィックスは何を表していますか?

32ビットのレジスタ名はEで始まり、64ビットのレジスタ名はRで始まります。EとRは何の略ですか。これらのアルファベットを選ぶ理由はありますか?

また、64ビットレジスタでも、Windbgなどの低レベルデバッガでは、名前がで始まることを除いて、右端のビットが64ビットレジスタと同じ名前で参照されていることがわかります。 E.たとえば64ビットシステムのRAXレジスタの右端の32ビットはEAXと呼ばれます。

それで、EとRは何かを表していますか?また、なぜレジスタのサフィックスXなのですか?

17
Water Cooler v2
  • Rは「register」 の略です。 AMD64 ISA拡張機能は、R8からR15という名前の8つの汎用レジスターを追加しました。元の8つのレジスターの64ビット拡張バージョンにはRプレフィックスが追加されました 対称性のため

  • Eは「extended」または「e強​​化された」。 ( ウィキペディアは "extended" と言っています。)これらは16ビットレジスタの「拡張」バージョンです。それらは合計32ビットに対して16の追加ビットを提供します。

  • Xは「extended」の略でもあります。または、heのように16を意味します。 xadecimal。*X-接尾辞レジスタは、8ビットレジスタの16ビット拡張バージョンです。 8ビットレジスタの場合、Lサフィックスは「低」を意味し、Hサフィックスは「高」を意味します。

したがって、1つの特定のレジスタを例にとると、8ビットのALレジスタとAHレジスタがあります。これらは、16ビットのAXレジスタの下位バイトと上位バイトです。 、これは32ビットのEAXレジスタの下位ワードであり、64ビットのRAXレジスタの下位ダブルワードです。

| 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 |
======================================
.         .         | AH     | AL    |
.         .         | AX             |
.         | EAX                      | 
| RAX                                |
======================================
| 63 - 32 | 31 - 16 | 15 - 8 | 7 - 0 |

__
* Xは、8080のニーモニック(LXIDCXなど)で使用されました for のペアを処理する命令それ以外の場合-AXAH:ALペアを表す方法と同様に、8ビットレジスタを16ビット整数として分離します 。したがって、別の考えられる解釈は、Xpairを意味し、この使用法は、8086を含む後続のプロセッサでhigh:lowペアに名前を付けるときに継続されました。 8080の完全な16ビット拡張。

26
Cody Gray