フィールドのアラインメント(Object Pascal)

提供: Appmethod Topics
移動先: 案内検索

Object Pascal コンパイラ指令のリスト:インデックス への移動


種類

スイッチ

構文

{$A+}、{$A-}、{$A1}、{$A2}、{$A4}、{$A8}、{$A16} のいずれか {$ALIGN ON}、{$ALIGN OFF}、{$ALIGN 1}、{$ALIGN 2}、{$ALIGN 4}、{$ALIGN 8}、{$ALIGN 16} のいずれか

デフォルト

{$A8} {$ALIGN 8}

スコープ

ローカル

説明

$A 指令は、フィールドのアラインメントにパディングを導入した場合にコンパイラで使用される最大アラインメントを制御します。

{$A1} または {$A-} 状態では、フィールドはアラインメントされません。 すべてのレコードおよびクラス構造体は packed になります。

{$A2} 状態では、packed 修飾子を付けずに宣言されているレコード型の内部のフィールドや、クラス構造体の内部のフィールドは、ワード境界でアラインメントされます。

{$A4} 状態では、packed 修飾子を付けずに宣言されているレコード型の内部のフィールドや、クラス構造体の内部のフィールドは、ダブルワード境界でアラインメントされます。

{$A8} または {$A+} 状態では、packed 修飾子を付けずに宣言されているレコード型の内部のフィールドや、クラス構造体の内部のフィールドは、クワッドワード境界でアラインメントされます。

{$A16} 状態では、packed 修飾子を付けずに宣言されているレコード型の内部のフィールドや、クラス構造体の内部のフィールドは、ダブル クワッドワード境界でアラインメントされます。

レコード型のフィールド アライメントについては、『Object Pascal 言語ガイド』の「内部データ形式#レコード型」で説明されています。

$A 指令の状態にかかわらず、変数と型付き定数は常に、最適にアクセスされるようにアラインメントされます。 {$A8} 状態の方が実行は速くなります。

Mac OS X アプリケーションの場合、スタック アラインメントは 16 バイト境界に合わせる必要があります。 詳細については、Eli Boling のブログ(http://blogs.embarcadero.com/eboling/2009/05/20/5607)を参照してください。

関連項目