5.30 データ境界整列のタイプ

メモリ内のデータへのアクセスはすべて、さまざまなカテゴリに分類できます。

以下のカテゴリがあります。
  • 自然境界整列(0x1004 のワード境界上など)。通常、ARM コンパイラは、LDR 命令と STR 命令を使用して変数に効率的にアクセスできるように、これらの変数を境界整列し、構造体にパディングを挿入します。
  • 既知の非自然境界整列(アドレス 0x1001 のワードなど)。このタイプの境界整列は、不要なパディングを除去するために構造体がパックされている場合に一般的に生じます。C および C++ では、構造体がパックされていることを示すために __packed 修飾子または #pragma pack(n) プラグマが使用されます。
  • 不明な境界整列(任意のアドレスのワードなど)。このタイプの境界整列は、参照先ワードのアドレスが任意のポインタを定義する際に一般的に生じます。C および C++ では、ポインタが自然配列以外の境界上にあるワードにアクセスできることを示すために、__packed 修飾子または #pragma pack(n) プラグマが使用されます。
関連する概念
5.31 自然なデータ境界整列のメリット
5.34 C および C++ コードでの非境界整列データアクセス
5.35 C および C++ コードでの __packed 修飾子と非境界整列型のデータアクセス
関連する参考文書
5.32 コンパイラによる自然なバイト境界整列でのデータオブジェクトの格納
5.33 コンパイル時の自然なデータ境界整列の関連性
10.97 #pragma pack(n)
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.