Everything

-far_rom


ROMデータのデフォルトのnear/far属性をfarにします。

[指定形式]

-far_rom

 

-

省略時解釈

ROMデータのデフォルトのnear/far属性は,-memory_modelオプションに従います。

[詳細説明]

-

メモリ・モデルで指定したROMデータに対するnear/far属性をfarに設定します。

-

__near/__farキーワード指定されたROMデータは本オプションの影響を受けません。

-

本オプションを指定すると,ポインタの指す先がconstのデータの場合,このポインタのnear/far属性はfarです。しかし,const以外のデータを指す場合はnear属性です。このため,ポインタの指す先がconstデータであるか否かによってポインタのサイズが異なり,C90およびC99規格に違反しますが,そのことを承知の上でご使用ください。

// -far_romを使用
      char* ptr;    //ポインタ・サイズは2バイト。__nearのcharを指すポインタ。
const char* c_ptr;  //ポインタ・サイズは4バイト。__farのconst charを指すポインタ。

-

const変数へのポインタを引数に持つ標準ライブラリ関数をリンクする場合, 標準ヘッダ内の“#if defined(__FAR_ROM__)”により,farポインタ用の標準ライブラリ関数に置き換えます。

puts,perror,atof,atoff,strtod,strtof,atoi,atol,strtol,strtoul,bsearch,qsort,memcpy,memmove,memcmp,memchr,memset,strcpy,strncpy,strcat,strncat,strcmp,strncmp,strchr,strcspn,strpbrk,strrchr,strspn,strstr,strlen

[使用例]

-

メモリ・モデルで指定したROMデータに対するnear/far属性をfarに設定します。

>ccrl -far_rom -cpu=S2 -dev=dr5f100pj.dvf main.c