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

AARCH64 固有の設定

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

  • メモリモデルは large です。(-mcmodel=large

    • SOLID DLL 用ライブラリは位置独立コードなので small モデルになります。

  • ARM/RISC-V と異なり、アンアラインドメモリアクセスが有効なコードを生成します。(デフォルト。オプション無指定。)

    • これは標準 C ライブラリの文字列関数に ARM 社の optimized-routines を使用しており、このライブラリがアンアラインドメモリアクセスと dc zva 命令を要求するからです。

    • MMU が有効になる前のコードで、コンパイラが memcpy, memmove, memset, memcmp を生成しないように注意してください。(この 4 関数は常に要求され、抑制オプションはありません。)

    • 特に memset 関数は dc zva 命令を使用するので、データキャッシュ無効領域や MMU OFF の状態では使用できません。

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