fibonacci/
fibonacci.rs

1extern crate web_assembler as wasm;
2
3use std::env;
4use std::fs::File;
5use std::io::Write;
6use wasm::builder::*;
7use wasm::*;
8
9fn main() {
10    let out_file = env::args().nth(1).expect("argument missing: output file");
11
12    let mut md = ModuleBuilder::new();
13    // function to create must be the 0th function of the module...
14    let fib = FunctionIndex(0).into();
15    let f = FunctionBuilder::new(funtype!((i32) -> i32))
16        .code(|cb, params| {
17            let n = params[0];
18            cb.get_local(n)
19                .constant(1i32)
20                .i32_sub()
21                .call(fib)
22                .get_local(n)
23                .constant(2i32)
24                .i32_sub()
25                .call(fib)
26                .i32_add()
27                .return_()
28        })
29        .build();
30    md.new_function(f);
31
32    let module = md.build();
33    let mut code = Vec::new();
34    module.dump(&mut code);
35    let mut out = File::create(out_file).unwrap();
36    out.write(&code).unwrap();
37}