4.17 __attribute__((bitband)) コンパイラ型属性

__attribute__((bitband)) は、構造体のビットバンド型定義に使用できる型属性です。

以下のサンプルでは、未配置のビットバンドオブジェクトを、ビットバンド領域内に再配置する必要があります。そのためには、適切なスキャッタロード記述ファイルを使用するか、--rw_base リンカコマンドラインオプションを使用します。
/* foo.c */
typedef struct {
  int i : 1;
  int j : 2;
  int k : 3;
} BB __attribute__((bitband));
BB value; // Unplaced object
void update_value(void)
{
  value.i = 1;
  value.j = 0;
}
/* end of foo.c */
または、以下のサンプルに示されているように、__attribute__((at())) を使用して、ビットバンド領域内の特定のアドレスにビットバンドオブジェクトを配置することもできます。
/* foo.c */
typedef struct {
  int i : 1;
  int j : 2;
  int k : 3;
} BB __attribute((bitband));
BB value __attribute__((at(0x20000040))); // Placed object
void update_value(void)
{
  value.i = 1;
  value.j = 0;
}
/* end of foo.c */
関連する概念
4.16 ビットバンディングに対するコンパイラおよびプロセッササポート
4.18 --bitband コンパイラコマンドラインオプション
4.19 ビットバンド領域の外に配置されたビットバンドオブジェクトをコンパイラが処理する方法
関連する参考文書
10.58 __attribute__((bitband)) 型属性
10.64 __attribute__((at(address))) 変数属性
8.17 --bitband
関連情報
スキャッタロード機能
--rw_base=address リンカオプション
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.