mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
34 lines
493 B
V
34 lines
493 B
V
|
import wasm
|
||
|
|
||
|
fn main() {
|
||
|
mut m := wasm.Module{}
|
||
|
mut fac := m.new_function('fac', [.i64_t], [.i64_t])
|
||
|
{
|
||
|
fac.local_get(0)
|
||
|
fac.eqz(.i64_t)
|
||
|
fac.c_if([], [.i64_t])
|
||
|
{
|
||
|
fac.i64_const(1)
|
||
|
}
|
||
|
fac.c_else()
|
||
|
{
|
||
|
{
|
||
|
fac.local_get(0)
|
||
|
}
|
||
|
{
|
||
|
fac.local_get(0)
|
||
|
fac.i64_const(1)
|
||
|
fac.sub(.i64_t)
|
||
|
fac.call('fac')
|
||
|
}
|
||
|
fac.mul(.i64_t)
|
||
|
}
|
||
|
fac.c_end_if()
|
||
|
}
|
||
|
m.commit(fac, true)
|
||
|
print(m.compile().bytestr())
|
||
|
|
||
|
// v run factorial.v > a.wasm
|
||
|
// wasmer a.wasm -i fac 5
|
||
|
}
|