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
|