From 805eb44a5c467ffdd5aa947853577dfc343a4ac9 Mon Sep 17 00:00:00 2001 From: Volodymyr Shymanskyy Date: Sat, 30 Nov 2019 00:15:04 +0200 Subject: [PATCH] Update WASI printf example --- test/wasi/README.md | 15 ++++++++--- test/wasi/wasi_printf.c | 50 +++++++++++++++++++++++++++++++++---- test/wasi/wasi_printf.wasm | Bin 30926 -> 31375 bytes 3 files changed, 56 insertions(+), 9 deletions(-) diff --git a/test/wasi/README.md b/test/wasi/README.md index a71e309..8f37d45 100644 --- a/test/wasi/README.md +++ b/test/wasi/README.md @@ -1,15 +1,22 @@ ## Compile ```sh -wasicc -Oz wasi_printf.c -o wasi_printf.wasm - -# Disassemble: -wasm2wat wasi_printf.wasm -o wasi_printf.wat +wasicc -O3 wasi_printf.c -o wasi_printf.wasm ``` ## Run ```sh ../../build/wasm3 wasi_printf.wasm _start + +$ENGINES_PATH/wasm-micro-runtime/core/iwasm/products/linux/build/iwasm wasi_printf.wasm + +$ENGINES_PATH/wac/wax wasi_printf.wasm + +$ENGINES_PATH/WAVM/Release/bin/wavm run wasi_printf.wasm + +wasmer run wasi_printf.wasm + +wasmer-js run wasi_printf.wasm ``` diff --git a/test/wasi/wasi_printf.c b/test/wasi/wasi_printf.c index e0a00a6..f7ec4bf 100644 --- a/test/wasi/wasi_printf.c +++ b/test/wasi/wasi_printf.c @@ -1,8 +1,48 @@ -#include #include +#include +#include -int main(int args, char* argv[]) { - //puts("Hello world!"); - printf("Hell%x w%d%s!\n", 0, 0, "rld"); - return 0; +#define WASM_EXPORT __attribute__((used)) __attribute__((visibility ("default"))) + +struct timespec timespec_diff(struct timespec start, struct timespec end) +{ + struct timespec temp; + if ((end.tv_nsec-start.tv_nsec)<0) { + temp.tv_sec = end.tv_sec-start.tv_sec-1; + temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec; + } else { + temp.tv_sec = end.tv_sec-start.tv_sec; + temp.tv_nsec = end.tv_nsec-start.tv_nsec; + } + return temp; +} + +WASM_EXPORT +uint32_t fib(uint32_t n) +{ + if(n < 2) { + return n; + } + return fib(n-1) + fib(n-2); +} + +int main() +{ + struct timespec start, finish; + + // Chew up some CPU time + volatile int n=38, result; + + printf("Calculating fib(%d)...\n", n); + + clock_gettime(CLOCK_REALTIME, &start); + result = fib(n); + clock_gettime(CLOCK_REALTIME, &finish); + + struct timespec delta = timespec_diff(start, finish); + + printf("Finished in: %lu ms\n", (delta.tv_sec*1000) + (delta.tv_nsec/1000000)); + //printf("ms: %lf\n", delta_s*1000.0 + delta_ns/1000000.0); + + return 0; } diff --git a/test/wasi/wasi_printf.wasm b/test/wasi/wasi_printf.wasm index 33727717be5482017b218c734f32750d91e9293f..df44dfe9b32b6c571bb5b3b5ee6641c366fca40c 100755 GIT binary patch delta 5492 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