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 共通)ライブラリ仕様 と同じです。