#!/usr/bin/env python # Wat execution script. # Copyright (C) 2021 Ariel Ortiz, ITESM CEM from wasmer import engine, Module, wat2wasm, Store, Instance from wasmer import ImportObject, Function from wasmer_compiler_cranelift import Compiler def make_import_object(store): def pow(base: int, expo: int) -> int: return base ** expo import_object = ImportObject() import_object.register( "math", { "pow": Function(store, pow) } ) return import_object def create_instance(file_name): store = Store(engine.JIT(Compiler)) with open(file_name) as wat_file: wat_source_code = wat_file.read() module = Module(store, wat2wasm(wat_source_code)) return Instance(module, make_import_object(store)) def main(): instance = create_instance('output.wat') print(instance.exports.start()) main()