var module = new binaryen.Module();

// memory with offset

module.addGlobalImport("memory_base", "env", "memory_base", binaryen.Type.i32, false);
module.setMemory(1, -1, null, [
  {
    name: "x0",
    offset: module.global.get("memory_base", binaryen.Type.i32),
    data: "data data".split('').map(function(x) { return x.charCodeAt(0) })
  }
]);

// table with offset

var func = module.addFunction("func", binaryen.Type.none, binaryen.Type.none, [], module.nop());

module.addGlobalImport("table_base", "env", "table_base", binaryen.Type.i32, false);
module.addTable("0", 1, -1, binaryen.Type.funcref);
module.addActiveElementSegment("0", "0", [ "func", "func" ], module.global.get("table_base", binaryen.Type.i32));
assert(module.validate());
console.log(module.emitText());
