MinCamlでAArch64のアセンブリコードを出力したい
#MinCaml #ARM #AppleSilicon #AArch64
手元にApple M1を搭載したMacBookが届いたので、Apple M1で何か面白いことをできないかと検討した結果、MinCamlをApple M1へ移植することにした。
MinCaml
OCamlのサブセット
以下のCPUアーキテクチャがサポートされている
UltraSPARC
PowerPC
x86
ここに Apple M1 を追加する
参考
MinCamlの中間コード出力方法まとめ
MinCamlのコンパイル時の中間コードを出力してみる
min_caml_start まわりのコードを確認
MinCamlをApple M1へ移植した(2周目)
仕様
PowerPC命令からAArch64命令への置き換えメモ
変数のサイズ
int (32ビット → 64ビット)
float (64ビットのまま)
移植手順
整数をプリントするだけのAArch64コードを出力
条件分岐を行うAArch64コードを出力
min_caml_startで渡したスタック領域とヒープ領域を利用するようにした
フィボナッチ数を計算するAArch64コードを出力
不動小数点数を扱うAArch64コードを出力
マンデルブロを出力するAArch64コードを出力
AArch64へ移植中のMinCamlの配列まわりを実装
MinCaml の test ディレクトリの中のプログラムを動かしてみる
クロージャを使ったプログラムのAArch64コードを出力
MinCamlのバグ修正 ( test/funcomp )
MinCamlのバグ修正 ( test/non-tail-if )
MinCamlのバグ修正 ( test/inprod-rec )
グローバル変数を参照するAArch64コードを出力したい
MinCamlとグローバル変数とクロージャ
min-rt
AArch64 MinCamlでmin-rtを動かしてみる
2週目
MinCamlをApple M1へ移植した(2周目)