import Builder from '../Builder.js' | |
import * as assert from '../assert.js' | |
const b = new Builder(); | |
b.Type().End() | |
.Function().End() | |
.Memory().InitialMaxPages(1, 1).End() | |
.Export().Function("foo").End() | |
.Code() | |
.Function("foo", { params: ["i32", "i32"], ret: "i32" }) | |
.GetLocal(1) | |
.GetLocal(0) | |
.I32Store(2, 0) | |
.GetLocal(1) | |
.I32Load8S(0, 0) | |
.Return() | |
.End() | |
.End() | |
const bin = b.WebAssembly().get(); | |
const foo = (new WebAssembly.Instance(new WebAssembly.Module(bin))).exports.foo; | |
assert.eq(foo(0, 10), 0); | |
assert.eq(foo(100, 112), 100); | |
assert.eq(foo(1000000, 10), 0x40); |