なぜelfのエントリポイントは0x8048320.
ですか?This質問から、そのプロセスをマッピングするためにオペレーティングシステムカーネルが使用する仮想アドレスです。しかし、、プロセスがマップされる仮想アドレス(x86プロセッサー)は0xc0000000
(ユーザー領域では3GB、カーネル領域では1GB)です。今0x8048320開始点アドレスの背後にある理論は何ですか?それは0c0000000h
であるべきではないでしょうか?elf実行可能ヘッダのエントリポイント
よろしく、
なぜelfのエントリポイントは0x8048320.
ですか?This質問から、そのプロセスをマッピングするためにオペレーティングシステムカーネルが使用する仮想アドレスです。しかし、、プロセスがマップされる仮想アドレス(x86プロセッサー)は0xc0000000
(ユーザー領域では3GB、カーネル領域では1GB)です。今0x8048320開始点アドレスの背後にある理論は何ですか?それは0c0000000h
であるべきではないでしょうか?elf実行可能ヘッダのエントリポイント
よろしく、
エントリポイントは、実行可能ファイルのマッピングの始まりではありません。これは、プログラムの開始時に実行される最初の命令のアドレスです。したがって、通常は.text
セクションの真中にあります。
GCCまたはコンパチブルコンパイラを使用する場合は、_start
のアドレスがlibc
になります。それは最終的にあなたのmain()
と呼ぶ関数です。
あなたの例から、0x8048320
ベースアドレスはおそらく0x8000000
なり、_start
のオフセットが0x48320
になります。しかし、私のマシンで
$ readelf -h /usr/bin/ls | grep Entry
Entry point address: 0x404030
すべてのこれらの仮想アドレスは、通常、コンパイラおよび/またはリンカーまでです。
エリートヘッダーからのエントリーポイント: 'readelf -h a.out' – Aimal
[実行ファイルのエントリポイントアドレスが0x8048330(0x330は.textセクションのオフセットです)]の重複可能性があります。(https://stackoverflow.com/questions/12488010 /なぜ私の実行可能ファイル内のエントリポイントアドレスは0x8048330-0x330-of-offset-ofですか) –