こんにちは。NoMaYです。ウェブで調べ物をしていて気付いたのですが、RenesasさんはLLVM(今はGCCと並ぶ著名なフリーコンパイラ)にRL78をPortingしようとしているのかも、、、[llvm-dev] New LLVM backend for Renesas RL78 MCUSebastian Perta via llvm-dev llvm-dev at lists.llvm.org Wed Apr 1 10:26:05 PDT 2020 lists.llvm.org/pipermail/llvm-dev/2020-April/140546.html
こんにちは。NoMaYです。> 7/14の日付で新しいのが出てますね。情報どうもありがとうございます。LLVM for Renesas RL78 が 10.0.0.202104 --> 10.0.0.202107 とアップデートされていましたね。newlib nano が使えるようになったとのことで、使ってみると確かにビルドしたプログラムのサイズが大幅に小さくなりました。(GNURL78と同等(少しLLVM-RL78の方が小さい)になった。)手持ちのプログラムその1
LLVM-RL78 49,958 バイト@10.0.0.202104 --> 23,646 バイト@10.0.0.202107GNURL78 24,386 バイト@4.9.2.202002CC-RL 16,426 バイト@V1.10.00ICCRL78 15,850 バイト@V4.21.1
手持ちのプログラムその2
LLVM-RL78 73,396 バイト@10.0.0.202104 --> 46,198 バイト@10.0.0.202107GNURL78 50,418 バイト@4.9.2.202002CC-RL 34,766 バイト@V1.10.00ICCRL78 対象外(評価版のサイズ制限(16Kバイト)を超えるので同一プログラムをビルド出来ない)
注:(1) 各ツールのサイズ表示機能を使用しているので計測対象が微妙に異なるかも知れません(2) ICCRL78は評価版のサイズ制限(16Kバイト)の事情で関数ポインタの先の関数が64Kバイト内に制限されるコードです。(2') 他のコンパイラでは関数ポインタの先の関数が64Kバイト内に制限されないコードです。
こんにちは。NoMaYです。ルネサスさんのCC-XXコンパイラもLLVMテクノロジを採用していますが、これ程の差は何でしょうかね、、、もちろん、ルネサスさんのCC-XXコンパイラの開発者の方々が大変優秀な証拠ですね、と言ってしまえば終わりなのですが、これ程の差というのは技術的側面においてちょっと気になります。(計測対象が違っているかも知れないという可能性も含めて、、、)手持ちのプログラムその1
LLVM-RL78 23,646 バイト@10.0.0.202107CC-RL 16,426 バイト@V1.10.00
LLVM-RL78 46,198 バイト@10.0.0.202107CC-RL 34,766 バイト@V1.10.00
NoMaYさん、こんにちは。情報ありがとうございます。上記のプログラムサイズは、ライブラリ分と実プログラム分の比率は大体どのような比率かわかりますでしょうか?
Stevieさん、こんにちは。NoMaYです。> ライブラリ分と実プログラム分の比率は大体どのような比率かわかりますでしょうか?明日以降になりますが、調べて、投稿しようと思います。
ありがとうございます!サイズ向けの最適化能力を見る場合はライブラリ分は除いた方がよいのかなと思いました。こちらもLLVMを試している所なので、情報があれば共有させて頂きますね