...
1(module $listener
2 (import "wasi_snapshot_preview1" "random_get"
3 (func $wasi.random_get (param $buf i32) (param $buf_len i32) (result (;errno;) i32)))
4
5 (import "wasi_snapshot_preview1" "fd_write"
6 (func $wasi.fd_write (param $fd i32) (param $iovs i32) (param $iovs_len i32) (param $result.size i32) (result (;errno;) i32)))
7
8 (table 8 funcref) ;; Define a function table with a single element at index 3.
9 (elem (i32.const 3) $wasi.random_get)
10
11 (memory 1 1) ;; Memory is needed for WASI
12
13 (func $wasi_rand (param $len i32)
14 ;; call fd_write with an unsampled FD, inside a sampled function.
15 i32.const 1 ;; $fd = stdout
16 i32.const 0 i32.const 0 i32.const 0 ;; $iovs, $iovs_len $result.size = 0.
17 call $wasi.fd_write
18 drop ;; errno
19
20 i32.const 4 local.get 0 ;; buf, buf_len
21 call $wasi.random_get
22 drop ;; errno
23
24 i32.const 8 local.get 0 ;; buf, buf_len
25 i32.const 3 call_indirect (type 0) ;; element 3, func type 0
26 drop ;; errno
27 )
28
29 (func $rand (export "rand") (param $len i32)
30 local.get 0 ;; buf_len
31 call $wasi_rand
32 )
33)
View as plain text