2017-09-30 9 views
-3

私はMIPSについて読んでいます。メモリレイアウト: https://www.cs.uaf.edu/2004/fall/cs301/notes/notes/node12.html アプリケーションプログラマとして、アプリケーションプログラムを書くときに、上記のメモリマッピングがどこに関連しているのかわかりません。 代わりに、システムプログラマ、コンパイラ/アセンブラライタがコード内にバイナリアドレスを生成するときに関係しますか?もしそうなら、上記インターレースアドレスの選択の裏には何か知恵がありますか?MIPS Memoyレイアウト:誰に関係するか

供給として

+0

提供されたマップはメモリマップ*アプリケーションが見る* - システムプログラマには何も言わない。 – tofro

+0

@tofroありがとうございました。彼のケースではシステム・プログラマのことを指していた:コンパイラ/リンカ・コーダ。それらは、異なるメモリアドレスを解決するときに上記のmempryマッピングをとる必要があります – Karlo

答えて

0

マップをありがとうは、あなたのアプリケーションが「中に投げ込ま」されている環境です。それは確かにいくつかの重要な情報を持っているん:

  • アプリケーションでは、コード+データ+スタックは、あなたのスタックオーバーフローの場合には2ギガバイト
  • を超えることはできません
  • 、それはあなたの中に実行されるアドレス0x400000
  • に開始するようにリンクする必要がありますデータはあなたのコードではありません(例えば、スタックが0x400000から下に向かって成長した場合には全く違うでしょう)
  • プログラムの使用可能なアドレスは0x400000から0x7ffffffの範囲に制限されているので、プログラムは2GBを超えることはできません。

マップにはアプリケーションのメモリレイアウトが表示されているため、ほとんどの場合仮想アドレスはシステムプログラマにとってあまり役に立ちません。

関連する問題