異なるビットフィールドのメンバを設定するためには、そのたびにビットフィールドを含むデータにアクセスしなければなりません。関連するビットフィールドを同じ構造体内にまとめて割り付けることによって、このアクセスを一度で済ますことができます。
【使用例】
同じ構造体に関連するビットフィールドを割り付けることによってサイズが改善する例を示します。
改善前ソースコード
struct str
{
Int flag1:1;
}b1,b2,b3;
void func()
{
b1.flag1 = 1;
b2.flag1 = 1;
b3.flag1 = 1;
}
|
改善前アセンブリ展開コード
_func:
MOV.L #_b1,R5
BSET #00H,[R5]
MOV.L #_b2,R5
BSET #00H,[R5]
MOV.L #_b3,R5
BSET #00H,[R5]
RTS
|
改善後ソースコード
struct str
{
int flag1:1;
int flag2:1;
int flag3:1;
}a1;
void func()
{
a1.flag1 = 1;
a1.flag2 = 1;
a1.flag3 = 1;
}
|
改善後アセンブリ展開コード
__func:
MOV.L #_a1,R4
MOVU.B [R4],R5
OR #07H,R5
MOV.B R5,[R4]
RTS
|