32ビットのレジスタ名はEで始まり、64ビットのレジスタ名はRで始まります。EとRは何の略ですか。これらのアルファベットを選ぶ理由はありますか?
また、64ビットレジスタでも、Windbgなどの低レベルデバッガでは、名前がで始まることを除いて、右端のビットが64ビットレジスタと同じ名前で参照されていることがわかります。 E.たとえば64ビットシステムのRAXレジスタの右端の32ビットはEAXと呼ばれます。
それで、EとRは何かを表していますか?また、なぜレジスタのサフィックスXなのですか?
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のニーモニック(LXI
やDCX
など)で使用されました for のペアを処理する命令それ以外の場合-AX
がAH:AL
ペアを表す方法と同様に、8ビットレジスタを16ビット整数として分離します 。したがって、別の考えられる解釈は、X
はpairを意味し、この使用法は、8086を含む後続のプロセッサでhigh:lowペアに名前を付けるときに継続されました。 8080の完全な16ビット拡張。