exeClang for SOLID s009(ARM)ライブラリ仕様

ARM 固有の設定

ライブラリは以下の設定でビルドされています。

  • メモリモデルはデフォルト(オプション無指定)です。

  • ABI(EABI)は Clang のデフォルト(オプション無指定)の aapcs-linux になります。exeGCC と同様に enum は 4 バイト固定長になります。

    注釈

    正確には、Clang のデフォルトは aapcs ですが、その実装が実質的に aapcs-linux になっています。ソースコードに以下のような FIXME コメントが存在します。

    FIXME: Enumerated types are variable width in straight AAPCS.

  • アンアラインドメモリアクセスを行うコードは生成されません。(-mno-unaligned-access)また、ライブラリのアセンブリコードでも使用していないので、MMU 有効化前のコードでも memcpy, memmove, memset, memcmp(ユーザーが使用しなくても、コンパイラが自動生成する可能性があります)関数を安全に使用可能です。

  • Thumb2 命令セット(-mthumb)を使用します。ARM 命令セット(-marm)でビルドされたライブラリは付属しません。(Thumb2 命令セットと ARM 命令セットはリンク互換性があるため、exeGCC のアセンブリコード資産は引き続き使用可能です。)

その他のライブラリ仕様は exeClang for SOLID s008(RISC-V RV32/RV64 共通)ライブラリ仕様 と同じです。