A.6.5 ベースレジスタ指定時の外部変数アクセス最適化

RAMセクションのベースレジスタにR13を指定した場合、RAMセクションへのアクセスが、R13レジスタ相対となります。更にモジュール間の外部変数アクセス最適化を有効にした場合、R13レジスタ相対値が最適化されて、8bit範囲以下の値であれば、命令サイズが小さくなる場合があります。

【使用例】

改善前ソースコード

int a;
int b;
int c;
int d;
void fu{
       a=0;
       b=1;
       c=2;
       d=3;
}

改善前アセンブリ展開コード

_func:
       MOV.L #_a,R4
       MOV.L #0000000H,[R4]
       MOV.L #_b,R4
       MOV.L #00000001H,{R4}
       MOV.L #_c,R4
       MOV.L #00000002H,[R4]
       MOV.L #_d,[R4]
       MOV.L #00000003H,[R4]
       RTS

改善後ソースコード

int a;
int b;
int c;
int d;
void fu{
       a=0;
       b=1;
       c=2;
       d=3;
}

改善後アセンブリ展開コード

__func:
        MOV.L #0000000H,_a-__RAM_TOP:16[R13]
        MOV.L #0000001H,_b-__RAM_TOP:16[R13]
        MOV.L #0000002H,_c-__RAM_TOP:16[R13]
        MOV.L #0000003H,_d-__RAM_TOP:16[R13]
        RTS