<コンパイル・オプション / マイコンオプション>
[指定形式]
 
プログラムセクションをPIC(位置独立コード)としてコード生成しません。
[詳細説明]
-  | プログラムセクションをPIC(位置独立コード)としてコード生成します。  | 
 
-  | PICにおいては、関数呼び出しはすべてBSRまたはBRA命令を用いて行い、また関数のアドレスを取得するときはPCからの相対アドレスを用いるようにします。これによって、PICはリンク後に任意のアドレスに配置することができます。  | 
 
[例]
-  | 関数呼び出し (ただし、branch=32の場合)  | 
 
void func() 
{
        sub(); 
} 
  
[-picなし] 
_func: 
            MOV.L       #_sub,R14 
            JMP         R14 
  
[-picあり] 
_func: 
            MOV.L       #_sub-L11,R14 
L11: 
            BRA         R14 
 | 
 
void func1(void); 
void (*f_ptr)(void); 
void func2(void) 
{
     f_ptr = func1; 
} 
  
[-picなし] 
_func2: 
            MOV.L       #_f_ptr,R4 
            MOV.L       #_func1,[R4] 
            RTS 
  
[-picあり] 
_func2: 
            MOV.L       #_f_ptr,R4 
L11: 
            MVFC        PC,R14 
            ADD         #_func1-L11,R14 
            MOV.L       R14,[R4] 
            RTS 
 | 
 
[備考]
-  | C++またはEC++コンパイル時は、picオプションを選択できません。選択すると、警告としてW0511171メッセージを表示してpicの選択を無効とします。  | 
 
-  | PICである関数のアドレスを、静的初期化の初期化式に使用しないでください。エラー E0523026となります。  | 
 
void pic_func1(void), pic_func2(int), pic_func3(int);     /* PICになる       */ 
void (*fptr1_for_pic) = pic_func1;      /* PICアドレスを静的初期化で使用: エラー */ 
struct PIC_funcs{ int code; void (*fptr)(int); };
struct PIC_funcs pic_funcs[] = {
    { 2, pic_func2 },                   /* PICアドレスを静的初期化で使用: エラー */
    { 3, pic_func3 },                   /* PICアドレスを静的初期化で使用: エラー */
}; 
 | 
 
-  | PIC機能を利用するアプリケーションプログラムのスタートアップを作成する際は、「スタートアップ」の章の「アプリケーションのスタートアップ」を参照ください。  | 
 
-  | PIC機能については、「スタートアップ」の章の「PIC/PID機能の利用」の項目も参照してください。  |