1. ホーム
  2. assembly

[解決済み] ベースレジスタを持たないqword ptr [hexvalue]の意味するところ

2022-02-26 23:15:17

質問

CLRのコードをアセンブリでデバッグしていたところ、ある行にたどり着きました。

mov rax, qword ptr [ff4053c0h]

思うに qword ptr [ff4053c0h] は気になる文字列を指していますが ff4053c0h は有効なメモリ位置ではありません。について読むと qword ptr は、ベース・レジスタに基づくアドレスを参照しているようです(例. qword ptr [rsp+30h] はスタックに30バイト)しかし、ベースレジスタがない場合の意味がわからないのです。

どのように解決するのですか?

ベースレジスタがない場合 という意味です。 data segment ( http://www.osdata.com/system/physical/memory.htm ). あなたのコードで mov rax, qword ptr [ff4053c0h] は、データセグメントのオフセットFF4053C0hから8バイトを取り出し、RAXに格納することを意味します"。

ご指摘のとおり、このようなベースレジスタの存在は rsp は明らかにスタックセグメントを示します。あなたの場合、ベースレジスタがなければデータセグメントを意味します。

さて、大きな数字 "FF4053C0h" は "4 282 405 824" ですが、4Gb のアドレス可能なメモリがあることは完全に可能です ( http://wiki.osdev.org/Protected_Mode このことから、あなたのコードは有効であり、巨大なデータセグメント( http://www.ece.unm.edu/~jimp/310/slides/micro_arch2.html ).

もう一つのソース = 組み立てる。データセグメントレジスタ(DS)の使用 .