gccでコンパイルしたプログラムを見てみるとどれも0x400000から開始されていました。
なぜ4なんですか??
32bitだと8みたいですが・・・
以下のようなurlを見たのですが・・・
http://stackoverflow.com/questions/14314021/why-linux-gnu-linker-chose-address-0x400000
なぜ0x400000にしたのかよくわかりません。
教えてください。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
0x400000 であるのは明確な理由があります。これは、ラージページモードでの最大のページサイズと同じになっています。
最初の一ページはNULL参照をキャッチするために、使用することはできません。そのため、どんなラージページモードにも対応できるように0x400000からスタートするようになっているのです。
投稿2016/09/26 16:28
総合スコア479
0
ベストアンサー
なぜ0x00400000にしたかと言うのは具体的に答えられませんが、
Linux, Unix系やWindowsに限らずParOSと呼ばれる独自OSでも0x00400000が実行ファイルのスタートアドレスとして指定されています。
コンパイラによっては変更することができるようです。
/BASE オプションの利用 プログラムのベース・アドレスを設定し, 実行形式ファイルまたは DLL の基本場所を置換します (実行形式ファイルでは 0x400000,DLL では 0x10000000)。 https://jp.xlsoft.com/documents/intel/cvf/vf-html/pg/pg04_02_04.htm
「memory map 0x00400000」などで検索すると色々ヒットします。
0x400000: 実行ファイルの実行可能領域 0x600000: 実行ファイルの実行不可領域 0x602000: ヒープ領域 0x7ffff7a1a000: 共有ライブラリ(libc) 0x7ffffffde000: スタック領域
2016/09/18 09:23 AM (雑記追記)
私もこの質問を見てなぜ0x00400000なのか気になりましたが、
HogeAnimalLover様が書かれている通り「作った人がそう決めたから」という筋が大いにありそうですね。
0x003FFFFFまではシステム領域として確保しておけば足りるだろうなどと考えたのかと推測します。
似た話でWake-on-LanのマジックパケットのMACアドレスを何故16回繰り返すのかというのもあります。
「16回でなく、15回でも、17回でも、32回でもよかったんじゃないか…」といった話です。
おそらく作者が「16回MACアドレスを繰り返せば他のパケットと偶然一致することはないだろう」などと考え、仕様を制定したのかと推測します。
参考文献
ELF実行ファイルのメモリ配置はどのように決まるのか - ももいろテクノロジー
http://inaz2.hatenablog.com/entry/2014/07/27/205913
ParOS - 15ページ目
https://www.toppers.jp/docs/tech/park/PartitionOS_SafetyConcept.pdf
windowsにおいて、デバッグソフトを用いて実行中のプロセスをアタッチし... - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10131267615
投稿2016/09/17 10:57
編集2016/09/18 00:24総合スコア769
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
言語の文法で定められていることではないですね。特に論理的な根拠はないと思います。多分OSやコンパイラの仕様によるものですね。要するに「作った人がそう決めたから」の話です。それ以上は「作った人でなければわからない」と思います。
投稿2016/09/17 14:27
総合スコア4853
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/27 01:45 編集
2016/09/27 01:57 編集