3.13 CC-RLオプション-convert_ccとの変換仕様差分

CC-RLには,コンパイル時にCA78K0のソースコードをコンパイルするオプションは存在しません。CC-RLにてCA78K0Rのソースコードをコンパイルためのオプション「-convert_cc=ca78k0r」指定時と,CcnvCA78K0による変換とで動作が異なる拡張機能について,差分を示します。

 

表 3.7

CC-RLオプション-convert_cc=ca78k0rと異なる動作

CA78K0の拡張機能

オプション-convert_cc=ca78k0r

指定時の動作

CcnvCA78K0の変換

__boolean

-ansiオプション指定なしの場合は_Bool,-ansiオプション指定ありの場合はcharとして扱います。

常に_Boolに変換します。

CC-RLの-ansiオプション指定時は_Boolが使用できませんので,手動で型を変更してください。

__callf

__leaf

__pascal

__flash

__flashf

__temp

__mxcall

コンパイル・エラーとなります。

削除します。

callf

noauto

norec

コンパイル・エラーとなります。

オプション-Aを指定しない場合に削除します。

__interrupt

__interrupt_brk

__rtos_interrupt

同名関数に対する#pragma指令が既に存在する場合は,キーワードを無視します。

関数宣言の前に#pragma指令を追加します。同名関数に対する#pragma指令が既に存在する場合は,変換後に#pragma 指令が重複してCC-RLではコンパイル・エラーとなります。その場合は,キーワードを変換した#pragma指令を削除してください。

__asm( )

通常の関数呼び出しと認識します。

手動でinline_asm関数に修正する必要があります。

デバイス変更によりアセンブラ記述は見直してください。

各__asm( )に対して#pragma inline_asmと関数定義を出力します。

__asm( )呼び出しは,新しく生成した関数呼び出しに変換します。

デバイス変更によりアセンブラ記述は見直してください。

va_start_banked

va_starttop_banked

通常の関数呼び出しと認識します。

va_startに変換します。

#pragma sfr

CC-RLのオプション-preinclude でiodefine.hをインクルードしてください。

デバイス変更によりSFRのアクセスは見直してください。

ファイルの先頭に#include “iodefine.h”を挿入します。

デバイス変更によりSFRのアクセスは見直してください。

#asm 〜 #endasm

構文エラーとなります。

手動でinline_asm関数に修正する必要があります。

デバイス変更によりアセンブラ記述は見直してください。

各#asm〜#endasmに対して#pragma inline_asmと関数定義を出力します。

#asm〜#endasmを,新しく生成した関数呼び出しに変換します。

デバイス変更によりアセンブラ記述は見直してください。

#pragma interrupt

#pragma vect

#pragma rtos_interrupt

割り込み要求名がある場合,CC-RLのオプション-preinclude でiodefine.hをインクルードしてください。

デバイス変更により割り込み要求名は見直してください。

割り込み要求名がある場合,ファイルの先頭に#include “iodefine.h”を挿入します。

デバイス変更により割り込み要求名は見直してください。