Everything
 

-base


コンパイル・オプション / マイコンオプション

[指定形式]

-base = {  rom=<レジスタ>
         | ram=<レジスタ>
         | <アドレス値> = <レジスタ>}
                         <レジスタ>:= {R8 ~ R13}

[詳細説明]

-

プログラム全体で、ベースアドレスとして固定で使用する汎用レジスタを指定します。

-

base=rom=<レジスタA>を指定した場合は、const変数のアクセスを指定したレジスタA相対で行うことを試みます。ただし、定数領域セクションのうち、最も0に近いアドレスと、最も0xFFFFFFFFに近いアドレスとの差が64KB~256KB(*1)以内でなければなりません。
定数領域セクションは、次のセクション(セクション名変更前)が対象となります。
C_1, C_2, C, C_8, C$VECT, C$INIT, C$VTBL, W, W_1, W_2, L

-

base=ram=<レジスタB>を指定した場合は、初期化変数および未初期化変数のアクセスは指定したレジスタB相対で行います。ただし、RAMデータ領域セクションの、最も0に近いアドレスと最も0xFFFFFFFFに近いアドレスとの差が64KB~256KB(*1)以内でなければなりません。
RAMデータ領域セクションは、次のセクション(セクション名変更前)が対象となります。
D_1, D_2, D, D_8, B_1, B_2, B, B_8

-

<アドレス値>=<レジスタC>を指定した場合は、コンパイル時に割り付けアドレスが確定している領域のうち、アドレス値から64KB~256KB*1以内の領域のアクセスを、指定したレジスタC相対で行います。

*1 この値は、アクセスする変数のサイズにより、64KBから256KBの間で変化します。

 

[備考]

-

異なる領域に対して同じレジスタを指定することはできません。

-

レジスタはそれぞれの領域で1個だけ指定可能です。fint_registerオプションで指定したレジスタを本オプションで指定した場合、エラーとなります。

-

pidオプション選択時は、base=rom=<レジスタ> を選択できません。選択すると、警告としてW0551149メッセージを表示してbase=rom=<レジスタ>の選択を無効とします。