マップファイルの N/A (command line) はなんですか?
テクニカル・ノート 13971
アーキテクチャ:
All
コンポーネント:
linker
更新日:
2018/08/07 8:54
はじめに
これは、特定の配置コマンドによって割り当てられた空間です。
配置コマンドの例
IAR XLINKリンカのコマンドを見てみましょう:
-DSPACE=8000
-Z(DATA)MYSEGMENT+SPACE=4000-FFFFFF
このコマンドによって、MYSEGMENTというセグメントが4000番地以降に割り当てられます。また、追加の領域として、0x8000バイト(SPACE)がMYSEGMENTの末尾に割り当てられます。MYSEGMENTが0x45678バイトの場合、このセグメントは、セグメントマップでは0x4D678バイト(0x45678 + 0x8000)と表示されます(これは、0x4000~0x51677番地を占めます)。また、SPACEが単なる追加の空間である場合、モジュールマップではN/A (コマンドライン) 32,768 (0x8000) N/A (command line) 32 768 (0x8000)と表示されます。
配置コマンドで割り当てられた追加の空間はプログラムの一部ではなく、モジュール内には常駐しないため、そのように表示されます。この空間は、コマンドラインで定義されたためにそこに存在するにすぎません。この空間は、主に、容易に変更可能な方法でスタックとヒープのサイズを設定するのに使用されます。
背景
この名前は「リンカ視点」に起因します。リンカは、コンパイラやアセンブラのことは何も分かりません。リンカは、単に、「再配置可能なコードとデータのモジュール」をリンクし、利用可能なメモリに配置して出力するだけです。(先に述べた)データは再配置できないため、これは別の方法でリンカに与えられます。この場合、「リンカ視点」に基づいて、「固定の場所に配置されたデータ」がコマンドラインから追加の入力として与えられます。
全ての製品名は、それぞれの所有者の商標または登録商標です。