-OVERRUN_FETCH


オーバーラン・フェッチに伴う未初期化領域の読み出しを回避します。

[指定形式]

-OVERRUN_FETCH

 

-

省略時解釈

なし

[詳細説明]

-

各ROMセクションの直後に128バイト以上の空き領域が存在する場合,そのROMセクションを読み出す際に,未初期化のコード・フラッシュ領域をプリフェッチする可能性があるため,空き領域に対して128バイト分のNOP命令を挿入します。

128バイトは,マイコンごとのプリフェッチのサイズに依存しない目安の値です。コード・フラッシュ領域の書き込み単位が256バイトであることから,後続するセクションとの間が128バイト未満である場合は未初期化領域が発生しないため,NOP命令の挿入を行いません。

 

NOP命令の挿入は-startオプションの配置に従って挿入し,挿入する直前のセクション名に対して以下のセクション名で出力します。

$sss_fetch??

sss : 挿入する直前のセクション名

?? : 01〜99

(1)

セクション間への挿入

-

ROMセクション(実行可能なプログラム・セクション,またはプログラム・セクション以外のROM領域配置セクション)とROMセクション,およびROMセクションとRAMセクション(RAM領域配置セクション)の間に128バイト以上の空き領域が存在する場合にNOP命令を挿入します。

-

ROMセクションとRAMセクションは,ROMセクションより大きいアドレスにRAMセクションが配置された場合に限り,NOP命令を挿入します(ROMセクションより小さいアドレスにRAMセクションが配置された場合はNOP命令を挿入しません)。

(2)

終端セクション直後への挿入

-

終端ROMセクションの直後にNOP命令を挿入します。

-

-cpuオプションでアドレス範囲を指定する際,終端セクションの終端アドレスとして指定した終了アドレスの間に128バイトの空き領域がない場合,NOP命令は挿入されません。

-

終端セクションの終端アドレスと8Mバイト境界のアドレスとの間に128バイトの空き領域がない場合,NOP命令は挿入されません。

[使用例]

-

オーバーラン・フェッチに伴う空き領域の読み出しを回避します。

>rlink a.obj b.obj -overrun_fetch

[備考]

-

-cpuオプションでアドレス範囲を指定していない場合,かつ終端セクションがROMセクションの場合,終端ROMセクションの直後に常にNOP命令を挿入します。

-

本オプションは,入力ファイルがロード・モジュール・ファイルの場合は無効となります。

-

本オプションは,-form={object|relocate|library}オプションを指定した場合は無効となります。

-

-startオプションでオーバーレイ配置指定を行った場合,オーバーレイ配置指定を含むstart列にはNOP命令の挿入を行いません。

例 1.

-start=A,B,E/400,C,D:F:G/8000オプションを指定した場合,オーバーレイ配置指定を含むセクションC,D,F,およびGに対するセクション間,および終端コード・セクションに対して,NOP命令の挿入を行いません。

例 2.

サイズ0のセクションの直後に128バイト以上の空き領域が存在する場合,NOP命令の挿入を行いません。

例 3.

ROMセクションの直後に配置されたサイズ0のセクションを含む128バイト以上の空き領域が存在する場合,NOP命令を挿入します。