LLVMにRenesas RL78をPortingしようとしているのかな?

こんにちは。NoMaYです。

ウェブで調べ物をしていて気付いたのですが、RenesasさんはLLVM(今はGCCと並ぶ著名なフリーコンパイラ)にRL78をPortingしようとしているのかも、、、

[llvm-dev] New LLVM backend for Renesas RL78 MCU
Sebastian 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です。

    e2 studio 2023-01でGCC for Renesas RL78がDeprecatedになってますね。その一方で、結局、RL78コード生成機能はLLVM for Renesas RL78をサポートしていませんし、RL78スマートコンフィグレータはRL78/G13やRL78/G14やその他の第1世代のRL78マイコンをサポートしていませんね。ひょっとして、その辺りの政治的事情で、CC-RL V1.12で-Oliteが導入されて、リンクサイズ制限無し、製品開発での使用も可能、といった事情に繋がっているのでしょうかね、、、(あと、CC-RLでC++14がサポートされた(現状はテクニカルプレービュー版ですが)のも関係するのでしょうかね、、、)

    以下、e2 studio 2023-01の画面コピーです。



    [関連リンク]

    CC-RL C++14テクニカルプレビュー版 ユーザーズマニュアル
    www.renesas.com/jp/ja/document/mat/cc-rl-c14-technical-preview-version-users-manual
     

  • こんにちは。NoMaYです。

    ウェブで調べ物をしていて気付いたのですが、RenesasさんはLLVM-RL78のソースをLLVMの本家のソースにMergeしようとしているっぽいですね、、、

    Upstreaming an new LLVM backend for Renesas RL78
    Sebastian.Perta
    March 14, 2023, 7:33pm
    discourse.llvm.org/t/upstreaming-an-new-llvm-backend-for-renesas-rl78/69235
     

  • こんにちは。NoMaYです。

    RenesasさんのLLVM-RL78コンパイラがMacOS対応を始めたようです。(今のところは、お試し、という感じでしょうか。) LLVM-RL78はCC-RLとC言語の拡張仕様の文法を合わせ込んであるということですので、もうLinuxとMacOSはLLVM-RL78で良いのかも知れませんね。(理屈の上では、CC-RL向けに発行されたアプリケーションノート/サンプルプログラム/デモプログラムとかLLVM-RL78で、そのままコンパイル出来るようにすることを目標としていた、ということの筈だから。)

    Release Notes: LLVM FOR RENESAS RL78 10.0.0.202306
    llvm-gcc-renesas.com/release-notes/rl78/latest/10.0.0.202306/release_notes.pdf

    CHANGES IN LLVM FOR RENESAS RL78 10.0.0.202306

    This toolchain is the successor of GCC RL78 toolchain and it is meant as a direct replacement to GCC RL78.
    This section describes the fixes made in the LLVM for Renesas RL78 10.0.0.202306 release.

    …略…

    3. [Improvement] Experimental support for macOS Ventura 13.4 Apple M1

    Experimental support was added for macOS Ventura 13.4 running on Apple M1.

    …略…


    Download Latest Toolchains
    Renesas RL78
    llvm-gcc-renesas.com/rl78/rl78-download-toolchains/

    ただ、現実には、まだ、以下の課題があるような気がしていますけれども、、、

    (1) アセンブラの文法に互換性が無い

    ⇒ 誰かCC-RLのアセンブラ文法互換のアセンブラを作っちゃえ。(ソースコンバータでも良いのかも。)

    (2) リンカのセクション指定の方法に互換性がない

    ・ CC-RLは基本はリンクオプションで指定/小技としてリンクサブコマンドファイル内にリンクオプションを記述
    ・ LLVM-RL78はリンカスクリプト

    ⇒ コンパイラドライバ(というかリンカドライバ)を誰かが作ってCC-RLリンクオプションからLLVM-RL78リンカスクリプトを生成しちゃえ。

    とか?、、、

  • こんにちは。NoMaYです。

    RenesasさんのLLVM-RL78コンパイラのユーザーズマニュアルを見ていて気付いたのですけれども、以下の件は(制限はあるにせよ)既にLLVM-RL78コンパイラのアセンブラでアセンブル出来るようになっていたようですね。失礼しました。

    > (1) アセンブラの文法に互換性が無い
    > ⇒ 誰かCC-RLのアセンブラ文法互換のアセンブラを作っちゃえ。(ソースコンバータでも良いのかも。)

    user_manual.pdf (私はLLVM for Renesas RL78 10.0.0.202306のインストールフォルダのものを見ました。)

    Assembler compatibility

    LLVM RL78 supports most of the CC-RL assembly expressions, operators and directives, with a couple of exceptions and restrictions.

    Contrary to CC-RL, where most integers are handled as unsigned, in LLVM absolute values are handled as 64 bit signed integers.
    Expressions will be evaluated at this bitwidth, then truncated if needed to the appropriate width.

    This results in some differences when evaluating expressions.
    For example: -1 > 1 will evaluate to 1 (True) in CC-RL and to 0 (False) in LLVM.

    While CC-RL assembler is case insensitive, currently in LLVM  only the uppercase operators/directives are supported, this will be addressed in next release.

    Operators and directives

    …以下省略…