MinCamlが出力したコードのアーキテクチャごとの比較
比べてみたけど特に得るものは無かった。
PowerPC
code:4649.ml
.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, 4649
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
RISC-V (is17er-cpu-1)
うまく出力できていないような...
code:4649.s
# jump to entry point
# program begins
LABEL min_caml_print_int NOT FOUND # 7 print_int n # program ends
RISC-V (CPU-Adelie)
r4レジスタにセットした4649の値がmin_caml_print_intで使われるみたい。
code:4649.s
min_caml_start:
set %r3, $2044 ; ad hoc
set %r31, $0xaa
out %r31 ; for contest server
set %r4, $4649
sw %r2, %r1, $0
addi %r2, %r2, $4
jal %r1, min_caml_print_int
addi %r2, %r2, $-4
lw %r1, %r2, $0
jal %r0, $0 ; end