こんにちは。NoMaYです。e2 studio v6.3.0がリリースされていたので、インストールして幾つかプロジェクトを作成して、いつものようにe2 studioのインストールフォルダを眺めていたら、CCRXmachine.hとCCRXmachine.cというファイルがあることに気付きました。中を見てみると、概ねファイル名から予想される通りのソースファイルでした。(今までのe2 studioのインストールフォルダを見直してみたところ、以前からあったことが分かりましたが、今まで気付きませんでした。) ただ、一部コメントアウトされているものがあったり、以前に別スレッド『GUNRX用プロジェクトのスマートコンフィグレータのBSPを見ていて気付いた変な移植コード』で話題にしたことと同じ元のコードの意図を理解していない書き換えがあったり、ちょっと惜しいような気もしました。e2 studioインストールフォルダ\internal\projectgen\rx\Generate\CCRXConversion\inc\CCRXmachine.he2 studioインストールフォルダ\internal\projectgen\rx\Generate\CCRXConversion\inc\CCRXmachine.c
こんにちは。NoMaYです。CC-RXのmachine.hに記載された組み込み関数のGNURX版に関して、(1) e2 studioのプロジェクトコンバータ、及び (2) FIT/RXスマートコンフィグレータ、それぞれにおいて進展があったことに気付きました。(1) e2 studio 7.3.0からCCRXmachine.hに全てインライン関数として記述されるようになった(以下は7.5.0のソースです)e2studioインストールフォルダ/internal/projectgen/rx/Generate/CCRXConversion/inc/CCRXmachine.he2studioインストールフォルダ/internal/projectgen/rx/Generate/CCRXConversion/source/CCRXmachine.c(2) RXスマートコンフィグレータplugin 7.5.0(RX Driver Package V1.20/R_BSP Module V5.20)から同等の関数が提供されているプロジェクトフォルダ/src/smc_gen/r_bsp/mcu/all/r_rx_intrinsic_functions.hプロジェクトフォルダ/src/smc_gen/r_bsp/mcu/all/r_rx_intrinsic_functions.c(私が気付いた)特徴は以下の通りです。(1-1) インラインアセンブラ記述主体のインライン関数として記述されている(ビルトイン関数は殆ど使われていない)(1-2) 関数名はCC-RXのものと同一(1-3) GNURX専用である(1-4) RXv3アーキテクチャ用の組み込み関数には現状では未対応(1-5) int_exception(num)はスタック上にコードを展開してスタック上で実行(2-1) #define記述主体で、ビルトイン関数を使用したり、Cソースのインラインアセンブラ記述関数やC記述関数を呼び出す(2-2) 関数名はCC-RXのものと同一ではなく、例えばR_BSP_EXCHANGE(x,y)などのように異なる(容易に対応は付きます)(2-3) CC-RX/GNURX/IAR C/C++ Compilerの3つに対応している(3つとも同じ名前で使用出来る)(2-4) RXv3アーキテクチャ用の組み込み関数にも対応済み(2-5) int_exception(num)相当のR_BSP_INT(x)はGNURX/IAR C/C++ Compilerのそれぞれのビルトイン関数を#defineしたもの