From 73ee667a6762db95f3f307aabd3361db72646722 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Mon, 22 Aug 2022 23:56:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=20tools/wa-wasmer-run?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/wa-wasmer-run/go.mod | 5 -- tools/wa-wasmer-run/go.sum | 12 ----- tools/wa-wasmer-run/main.go | 105 ------------------------------------ 3 files changed, 122 deletions(-) delete mode 100644 tools/wa-wasmer-run/go.mod delete mode 100644 tools/wa-wasmer-run/go.sum delete mode 100644 tools/wa-wasmer-run/main.go diff --git a/tools/wa-wasmer-run/go.mod b/tools/wa-wasmer-run/go.mod deleted file mode 100644 index 216498d..0000000 --- a/tools/wa-wasmer-run/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/wa-lang/wa/tools/wa-wasmer-run - -go 1.18 - -require github.com/wasmerio/wasmer-go v1.0.4 diff --git a/tools/wa-wasmer-run/go.sum b/tools/wa-wasmer-run/go.sum deleted file mode 100644 index 40810dd..0000000 --- a/tools/wa-wasmer-run/go.sum +++ /dev/null @@ -1,12 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/wasmerio/wasmer-go v1.0.4 h1:MnqHoOGfiQ8MMq2RF6wyCeebKOe84G88h5yv+vmxJgs= -github.com/wasmerio/wasmer-go v1.0.4/go.mod h1:0gzVdSfg6pysA6QVp6iVRPTagC6Wq9pOE8J86WKb2Fk= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tools/wa-wasmer-run/main.go b/tools/wa-wasmer-run/main.go deleted file mode 100644 index 2a45c59..0000000 --- a/tools/wa-wasmer-run/main.go +++ /dev/null @@ -1,105 +0,0 @@ -// 版权 @2022 凹语言 作者。保留所有权利。 - -package main - -import ( - "encoding/binary" - "flag" - "fmt" - "os" - - "github.com/wasmerio/wasmer-go/wasmer" -) - -var flagFile = flag.String("file", "a.out.wasm", "wasm file") - -func main() { - flag.Parse() - wasmBytes, err := os.ReadFile(*flagFile) - if err != nil { - fmt.Printf("read %q failed: %v", *flagFile, err) - os.Exit(1) - } - if err = Run(wasmBytes); err != nil { - fmt.Printf("run %q failed: %v", *flagFile, err) - os.Exit(1) - } -} - -func Run(wasmBytes []byte) error { - engine := wasmer.NewEngine() - store := wasmer.NewStore(engine) - - module, err := wasmer.NewModule(store, wasmBytes) - if err != nil { - return err - } - - var memory *wasmer.Memory - - // type iov struct { iov_base, iov_len int32 } - // func fd_write(fd int32, id *iov, iovs_len int32, nwritten *int32) (errno int32) - - wasiFdWrite := wasmer.NewFunction(store, - wasmer.NewFunctionType( - wasmer.NewValueTypes(wasmer.I32, wasmer.I32, wasmer.I32, wasmer.I32), - wasmer.NewValueTypes(wasmer.I32), - ), - func(args []wasmer.Value) ([]wasmer.Value, error) { - var argv []int - for _, arg := range args { - argv = append(argv, int(arg.I32())) - } - - iov := argv[1] - iov_base := binary.LittleEndian.Uint32(memory.Data()[iov:][:4]) - iov_len := binary.LittleEndian.Uint32(memory.Data()[iov+4:][:4]) - - msg := string(memory.Data()[iov_base:][:iov_len]) - fmt.Print(msg) - - return []wasmer.Value{wasmer.NewI32(len(msg))}, nil - }, - ) - waBuiltinWrite := wasmer.NewFunction(store, - wasmer.NewFunctionType( - wasmer.NewValueTypes(wasmer.I32), - wasmer.NewValueTypes(), - ), - func(args []wasmer.Value) ([]wasmer.Value, error) { - if len(args) > 0 { - fmt.Println(args[0].I32()) - } - return nil, nil - }, - ) - - importObject := wasmer.NewImportObject() - importObject.Register("wasi_snapshot_preview1", map[string]wasmer.IntoExtern{ - "fd_write": wasiFdWrite, - }) - importObject.Register("env", map[string]wasmer.IntoExtern{ - "__wa_builtin_print_int32": waBuiltinWrite, - }) - - instance, err := wasmer.NewInstance(module, importObject) - if err != nil { - return err - } - - memory, err = instance.Exports.GetMemory("memory") - if err != nil { - return err - } - - _start_fn, err := instance.Exports.GetFunction("_start") - if err != nil { - return err - } - - if _, err = _start_fn(); err != nil { - return err - } - - return nil -} -- GitLab