function l $zerop (l %n) { @start jnz %n, @b1, @b2 @b1 ret 0 @b2 ret 1 } function l $factorial (l %n) { @start %r1 =l call $zerop (l %n) jnz %r1, @b1, @b2 @b1 ret 1 @b2 %r2 =l sub %n, 1 %r3 =l call $factorial (l %r2) %r4 =l mul %n, %r3 ret %r4 } data $fstr = { b "fac 3 = %d\n", b 0 } export function w $main () { @start %r =l call $factorial (l 3) call $printf (l $fstr, ..., l %r) ret 0 }