__align

__align キーワードは、n バイト境界に変数を整列するようコンパイラに指示します。

__align は記憶域クラス修飾子です。これは、関数の型には影響しません。

Show/hide構文

__align(n)

各項目には以下の意味があります。

n

境界整列を指定します。

ローカル変数の場合、n には、1、2、4、または 8 を設定できます。

グローバル変数の場合、n には、2 の累乗で 0x80000000 以下の任意の値を設定できます。

Show/hide使用法

__align(n) は、宣言されている変数の通常の境界整列が n に指定された値より小さくなる場合に便利です。VFP 命令を使用する場合には 8 バイト境界整列によってパフォーマンスが大幅に向上します。

__align は、extern および static と組み合わせて使用できます。

Show/hide制約条件

__align は記憶域クラス修飾子なので、以下では使用できません。

  • typedef や構造体定義を含む型

  • 関数のパラメータ

指定できるのはオーバーアライメントだけです。つまり、2 バイトオブジェクトを 4 バイト境界で整列させることはできますが、4 バイトオブジェクトを 2 バイト境界で整列させることはできません。

Show/hide

__align(8) char buffer[128];  // バッファの始点は 8 バイト境界
void foo(void)
{
    ...
    __align(16) int i; // このアライメント値はローカル変数
                       // には使用できません
    ...
}

__align(16) int i; // グローバル変数としては使用できます

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711