RV32用の各種ファイルを用意
RV32用の各種ファイルを用意
MinCaml内のCPUアーキテクチャに依存したコードは、CPUアーキテクチャごとにディレクトリが作られ、その中にアーキテクチャ依存コードが置かれる。
32ビットRISC-Vの依存コードの置き場として RV32 ディレクトリを作成し、CPUアーキテクチャ切り替えスクリプト to_rv32 を用意する。
min-caml/
SPARC/
PowerPC/
x86/
AArch64/
code:sh
# PowerPC のソースを元に RV64 対応を行う
cp -r PowerPC/ RV32
code:to_rv32
ln -sf RV32/{*.ml{,i},libmincaml.S} .
cd test; ln -sf RV32/{,too}manyargs.ml .; cd ..
cd shootout; ln -sf RV32/Makefile .; cd ..
cd bytemark; ln -sf RV32/Makefile .; cd ..
cd min-rt; ln -sf RV32/globals.s .; cd ..
ソースを出力してみる
code:sh
./to_rv32
make clean
make min-caml
./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