1.4.2. アライメントのサポート

コンパイラでは、ARMv6 の非境界整列アクセスのサポートをデフォルトで利用し、パック構造体へのアクセスの高速化を図っています。このサポートを利用すると、LDR(または STR)で、ワード境界で整列されていないアドレスからのロード(またはストア)を実行できます(例 2 - パック構造体参照)。明示的に __packed で修飾されていない構造体は、パックされていない状態になります。

Note

ARMv6 用にコンパイルされたコードは、ARM コアで非境界整列のサポートをイネーブルしている場合のみ正常に実行されます。非境界整列のサポートをイネーブルするには、初期化コードで CP15 レジスタ 1 の U ビット(ビット 22)を設定するか、コアへの UBITINIT 入力を HIGH に設定する必要があります。

以下のコンパイラオプションを使用すると、ARMv6 より前の非境界整列アクセス動作を使用するコードを生成できます。

--no_unaligned_access

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0203GJ
Non-Confidential