MinCamlの対話環境で入力したプログラムのアセンブリコードを標準出力へ書き出す
まずは MinCamlをビルド。
code:sh
$ cd /tmp
$ cd min-caml
# 文字コードをEUC-JPからUTF-8へ
$ nkf -Ew --overwrite nkf --guess **/* | grep EUC | awk 'BEGIN{FS=":"} {print $1}'
# PowerPCのアセンブリコードを出力する
$ ./to_ppc
# ビルド
$ make min-caml
対話環境( min-calm.top )を立ち上げて...
code:sh
$ ./min-caml.top
main.mlを読み込んで...
code:ocaml
string関数を呼び出せばOK。コンパイル結果のアセンブリプログラムが標準出力に出力される。
code:ocaml
# string "print_int(1 + 1)";;
free variable print_int assumed as external
iteration 1000
eliminating variable Ti2.6
eliminating variable Ti1.5
iteration 999
register allocation: may take some time (up to a few minutes, depending on the size of functions)
generating assembly...
.text
.globl _min_caml_start
.align 2
_min_caml_start: # main entry point
mflr r0
stmw r30, -8(r1)
stw r0, 8(r1)
stwu r1, -96(r1)
# main program starts
li r2, 2
mflr r31
stw r31, 4(r3)
addi r3, r3, 8
bl min_caml_print_int
subi r3, r3, 8
lwz r31, 4(r3)
mtlr r31
# main program ends
lwz r1, 0(r1)
lwz r0, 8(r1)
mtlr r0
lmw r30, -8(r1)
blr
- : unit = ()
#