wasker 0.2.2

Wasm compiler for running Wasm on your favorite kernel
Documentation
;; Test `return` operator
(module

  ;; Import our myprint function
  (import "myenv" "print" (func $print (param i64 i32)))

  ;; Define a single page memory of 64KB.
  (memory $0 1)

  ;; Store the Hello World (null terminated) string at byte offset 0
  (data (i32.const 0) "Test Passed\n")
  (data (i32.const 16) "Test Failed\n")

  ;; Debug function
  (func $printd (param $len i32)
    i64.const 0
    (local.get $len)
    (call $print)
  )

  (func $printSuccess
    i64.const 0
    i32.const 12
    (call $print)
  )

  (func $printFail
    i64.const 16
    i32.const 12
    (call $print)
  )

  (func $assert_test_i32 (param $expected i32) (param $result i32)
    local.get $expected
    local.get $result
    i32.eq
    (if
      (then
        (call $printSuccess)
      )
      (else
        (call $printFail)
      )
    )
  )

  (func $assert_test_i64 (param $expected i64) (param $result i64)
    local.get $expected
    local.get $result
    i64.eq
    (if
      (then
        (call $printSuccess)
      )
      (else
        (call $printFail)
      )
    )
  )

  (func $select-i32 (param i32 i32 i32) (result i32)
    (select (local.get 0) (local.get 1) (local.get 2))
  )
  (func $select-i64 (param i64 i64 i32) (result i64)
    (select (local.get 0) (local.get 1) (local.get 2))
  )

  (func $test_select
    (call $assert_test_i32 (call $select-i32 (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1))
    (call $assert_test_i32 (call $select-i32 (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2))
    (call $assert_test_i32 (call $select-i32 (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1))
    (call $assert_test_i64 (call $select-i64 (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2))
    (call $assert_test_i64 (call $select-i64 (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2))
    (call $assert_test_i64 (call $select-i64 (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2))
  )
  
  (func (export "_start")
    (call $test_select)
  )
)