/usr/share/doc/smlnj/MLRISC-demo/eg-sparc.sml is in smlnj 110.79-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | (*---------------------------------------------------------------------------
* Here's an example: factorial for sparc.
*---------------------------------------------------------------------------*)
fun eg1() = (* fact(n) *)
let open SparcBackEnd
val fact = C.newReg()
val i = C.newReg()
val n = C.GPReg 1 (* let's say r1 is the input/output parameter *)
val loop = Label.newLabel "loop"
val exit = Label.newLabel "exit"
in codegen
(Label.newLabel "factorial",
[T.MV(32, i, T.REG(32, n)),
T.MV(32, fact, T.LI 1),
T.DEFINE loop,
T.BCC(T.CMP(32, T.LE, T.REG(32, n), T.LI 0), exit),
T.MV(32, fact, T.MULS(32, T.REG(32, i), T.REG(32, fact))),
T.MV(32, i, T.SUB(32, T.REG(32, i), T.LI 1)),
T.JMP(T.LABEL(LabelExp.LABEL loop), []),
T.DEFINE exit,
T.MV(32, n, T.REG(32, fact)),
T.RET []
]
)
end
|