.mapファイル中の' N/A (alignment) 'は何ですか?

テクニカル・ノート 35041

アーキテクチャ:

8051, AVR, AVR32, Coldfire, CR16C, H8, HCS12, M16C, M32C, MAXQ, MSP430, R32C, R8C, S08, SAM8, V850, 78K

コンポーネント:

linker

更新日:

2018/08/13 1:01

はじめに

.*mapファイルの「N/A (alignment)」とは何ですか? セグメントのアラインメントに関する制約により失われた空間のことです。

配置コマンドの例:

-Z(DATA)A,B,C=0-FFFF

前提条件:

  • Aは、サイズが0x1Fバイトで、アラインメントは0です(1バイトでアラインメント)
  • Bは、サイズが0xAバイトで、アラインメントは1です(2バイトでアラインメント)
  • Cは、サイズが0x40バイトで、アラインメントは2です(4バイトでアラインメント)

結果:

  • Aは0x0~0x1Eに配置されます
  • Bは0x20~0x29に配置されます(アラインメントによって、0x1Fにある1バイトが失われます)
  • Cは0x2C~0x6Bに配置されます(アラインメントによって、0x2Aと0x2Bにある2バイトが失われます)

この場合、モジュールサマリには3バイトがN/A (alignment)としてリストされます。

なお、逆の順序(C、B、A)で配置すると、アラインメントによって「あふれる」空間は0バイトになります。N/A (alignment)エントリを見ると、アラインメントの問題によって無駄になったバイト数が存在するかどうかを素早く確認できます。

全ての製品名は、それぞれの所有者の商標または登録商標です。

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。