8.154 --pointer_alignment=num

アプリケーションに必要な非境界整列ポインタのサポートを指定します。

構文

--pointer_alignment= num
num には以下のいずれかを指定できます。
1
ポインタを介したアクセスには、境界整列が 1 つあります(バイト境界で整列されるか境界整列されないもの)。
2
ポインタを介したアクセスには、境界整列が最大 2 つあります(ハーフワード境界で整列されるもの)。
4
ポインタを介したアクセスには、境界整列が最大 4 つあります(ワード境界で整列されるもの)。
8
ポインタでのアクセスは、通常の境界整列であるとして、つまり最大でもダブルワード境界で整列されるものとして処理されます。
num を指定せずに --pointer_alignment を使用すると、エラーになります。

使用法

このオプションは、整列要求がないアーキテクチャ用に記述されたソースコードを移植する場合に利用できます。__packed 修飾子を使用することで、生成されるコードの質に大きな影響を及ぼすことなく、非境界整列データへのアクセスをより厳密に制御できます。

制限

ポインタが境界整列されていないと、非境界整列アクセスがサポートされたプロセッサでも、コードサイズが大きくなることがあります。これは、非境界整列アクセスのサポートによるメリットは、ロード命令とストア命令のサブセットにしかないからです。コンパイラは、非境界整列されたメモリオブジェクトに対して、ハードウェア浮動小数点のロード命令とストア命令など、多重ワード転送命令またはコプロセッサとメモリ間の転送命令を直接的に使用することができません。

  • v6 以前のアーキテクチャなど、非境界整列アクセスのハードウェアサポートがないプロセッサ用にコンパイルを行うと、コードサイズが著しく増大する場合があります。
  • このオプションによって、メモリ内のオブジェクトの配置や、構造体のレイアウトとパディングが影響を受けることはありません。
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.