/usr/share/doc/smlnj/MLRISC-demo/eg-alpha.sml is in smlnj 110.76-1.
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 alpha.
*---------------------------------------------------------------------------*)
fun eg2() = (* fact(n) *)
let open AlphaBackEnd
val fact = C.newReg()
val i = C.newReg()
val n = C.GPReg 0 (* let's say r0 is the input/output parameter *)
val loop = Label.newLabel "loop"
val exit = Label.newLabel "exit"
in codegen
(Label.newLabel "factorial",
[T.MV(64, i, T.REG(64, n)),
T.MV(64, fact, T.LI 1),
T.DEFINE loop,
T.BCC(T.CMP(64, T.LE, T.REG(64, n), T.LI 0), exit),
T.MV(64, fact, T.MULS(64, T.REG(64, i), T.REG(64, fact))),
T.MV(64, i, T.SUB(64, T.REG(64, i), T.LI 1)),
T.JMP(T.LABEL(LabelExp.LABEL loop), []),
T.DEFINE exit,
T.MV(64, n, T.REG(64, fact)),
T.RET []
]
)
end
|