mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
vlib: add a wasm module, implementing a pure V webassembly seralisation library (#17909)
This commit is contained in:
43
examples/wasm_codegen/control_flow.v
Normal file
43
examples/wasm_codegen/control_flow.v
Normal file
@@ -0,0 +1,43 @@
|
||||
import wasm
|
||||
|
||||
fn main() {
|
||||
mut m := wasm.Module{}
|
||||
mut bif := m.new_function('block_if', [.i32_t], [.i32_t])
|
||||
{
|
||||
loc := bif.new_local(.i32_t)
|
||||
|
||||
// loc = i32.const 10
|
||||
bif.i32_const(10)
|
||||
bif.local_set(loc)
|
||||
|
||||
blk := bif.c_block([], [])
|
||||
{
|
||||
// if argument[0], break
|
||||
bif.local_get(0)
|
||||
bif.c_br_if(blk)
|
||||
// loc = i32.const 11
|
||||
bif.i32_const(11)
|
||||
bif.local_set(loc)
|
||||
}
|
||||
bif.c_end(blk)
|
||||
|
||||
// return loc
|
||||
bif.local_get(loc)
|
||||
}
|
||||
m.commit(bif, true)
|
||||
mut ifexpr := m.new_function('if_expr', [.i32_t], [.i64_t])
|
||||
{
|
||||
ifexpr.local_get(0)
|
||||
ifexpr.c_if([], [.i64_t])
|
||||
{
|
||||
ifexpr.i64_const(5000)
|
||||
}
|
||||
ifexpr.c_else()
|
||||
{
|
||||
ifexpr.i64_const(-5000)
|
||||
}
|
||||
ifexpr.c_end_if()
|
||||
}
|
||||
m.commit(ifexpr, true)
|
||||
print(m.compile().bytestr())
|
||||
}
|
Reference in New Issue
Block a user