ラズピコ用の各種ファイルを用意
Raspberry Pi Pico用の各種ファイルを用意
MinCamlはCPUアーキテクチャごとにソースファイルを配置するディレクトリが異なる。Raspberry Pi Pico用に PICO ディレクトリと、CPUアーキテクチャ切り替えスクリプト to_pico を用意する
code:sh
# PowerPC のソースを元にラズピコ対応を行う
cp -r PowerPC/ PICO
code:to_pico
ln -sf PICO/{*.ml{,i},libmincaml.S} .
cd test; ln -sf PICO/{,too}manyargs.ml .; cd ..
cd shootout; ln -sf PICO/Makefile .; cd ..
cd bytemark; ln -sf PICO/Makefile .; cd ..
cd min-rt; ln -sf PICO/globals.s .; cd ..
ソースを出力してみる
code:sh
./to_pico
make clean
make min-caml
./min-caml test/print
(エラーが出たら以下を修正して再ビルドする)
code:diff
diff --git a/float.c b/float.c
index 1508d9e..1165150 100644
--- a/float.c
+++ b/float.c
@@ -11,11 +11,11 @@ typedef union {
value gethi(value v) {
dbl d;
d.d = Double_val(v);
- return copy_int32(d.i0); + return caml_copy_int32(d.i0); }
value getlo(value v) {
dbl d;
d.d = Double_val(v);
- return copy_int32(d.i1); + return caml_copy_int32(d.i1); }
./min-caml test/print 実行後、以下のようなコードが出力されればOK(現状ではPowerPCコードが出力される)
code:test/print.s
.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, 123
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
li r2, -456
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
li r2, 789
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