関連するデータを同一関数の中で何度も参照している場合、構造体を用いると相対アクセスを利用したコードが生成され易くなり、効率向上が期待できます。また、引数として渡す場合も効率が向上します。相対アクセスにはアクセス範囲に制限があるため、頻繁にアクセスするデータは構造体の先頭に集めると効果的です。
データを構造化すると、データの表現を変更するようなチューニングが容易になります。
【使用例】
変数a, b, c に数値を代入します。
改善前ソースコード
 int a, b, c; 
 void func() 
 {
        a = 1; 
        b = 2; 
        c = 3; 
} 
 | 
 
改善前アセンブリ展開コード
_ func: 
        MOV.L #_a,R4 
        MOV.L #00000001H,[R4] 
        MOV.L #_b,R4 
        MOV.L #00000002H,[R4] 
        MOV.L #_c,R4 
        MOV.L #00000003H,[R4] 
        RTS 
 | 
 
改善後ソースコード
struct s{
        int a; 
        int b; 
        int c; 
} s1; 
void func() 
{
        register struct s *p=&s1; 
        p->a = 1; 
        p->b = 2; 
        p->c = 3; 
} 
 | 
 
改善後アセンブリ展開コード
_func: 
       MOV.L #_s1,R5 
       MOV.L #00000001H,[R5] 
       MOV.L #00000002H,04H[R5] 
       MOV.L #00000003H,08H[R5] 
       RTS 
 |