3

インテル64®およびIA-32アーキテクチャーソフトウェア開発者マニュアルのセクション4.3 。ボリューム1:基本的なアーキテクチャ、それは言う:

ニアポインタは、セグメント内の32ビットオフセットです。ニアポインタは、フラットメモリモデルのすべてのメモリ参照、またはアクセスされているセグメントのIDが暗黙指定されているセグメント化モデルの参照に使用されます。

これは私に疑問を投げかけます:暗黙のセグメントレジスタはどのように決定されますか?

(%eip)置き換えられた(%eip)(たとえば-4(%eip))アドレス%csがデフォルトで使用され(%esp)、置き換えられた(%esp)アドレスが使用することは知っていますが、、、などは%ssどうでしょうか。暗黙のセグメントレジスタは、メモリアドレスオペランドが含まれる命令にも依存できますか?(%eax)(%edx)(%edi)(%ebp)

4

1 に答える 1

3

あなたが言及したレジスタアクセス以外 CSに、他のほとんどのアクセスはセグメントレジスタを使用します。私が思い出すことができるいくつかの例外:SSDS

  • 文字列指向の命令はES、「宛先」(レジスタによって暗黙的にアドレス指定されるEDI) セグメント レジスタに を使用します。
  • EBPレジスタを「ベース アドレス」レジスタとして使用するメモリ アクセスでは、SSセグメント レジスタが使用されます。ただし、EBPレジスタがスケーリングされたインデックス レジスタとして使用される場合、使用されるセグメントはDS(ベース アドレス レジスタが でない限りESP)
于 2010-05-20T21:34:44.237 に答える