Files
wasmtime/examples/test.rs
Sergey Pepyakin 08240761d5 Compile a simple function (#2)
* Implement basics.

* Execute code

* Add wasm2wat test cases.

* abi_loc_for_arg for stack.

* Assert that sp_depth is 0 at the epilogue

* Do 32bit add.

* Assert that RAX can be used as a scratch register

* Reuse assembler.

* Align stack slots.
2018-11-08 13:56:27 -08:00

37 lines
886 B
Rust

extern crate lightbeam;
use lightbeam::translate;
use std::fs::File;
use std::io;
use std::io::Read;
use std::path::Path;
fn read_to_end<P: AsRef<Path>>(path: P) -> io::Result<Vec<u8>> {
let mut buffer = Vec::new();
if path.as_ref() == Path::new("-") {
let stdin = io::stdin();
let mut stdin = stdin.lock();
stdin.read_to_end(&mut buffer)?;
} else {
let mut file = File::open(path)?;
file.read_to_end(&mut buffer)?;
}
Ok(buffer)
}
fn maybe_main() -> Result<(), String> {
let data = read_to_end("test.wasm").map_err(|e| e.to_string())?;
let translated = translate(&data).map_err(|e| e.to_string())?;
let result = translated.execute_func(0, 5, 3);
println!("f(5, 3) = {}", result);
Ok(())
}
fn main() {
match maybe_main() {
Ok(()) => (),
Err(e) => eprintln!("error: {}", e),
}
}