diff options
author | Aymen Dirar | 2022-10-24 06:06:51 +0000 |
---|---|---|
committer | Aymen Dirar | 2022-10-24 06:08:17 +0000 |
commit | 81fdbeb7fa4d8a80d028a988c353c3fa16d4953b (patch) | |
tree | 743dde4e75d9c04ceb259d690f967d0a1f6b7907 /entries/adirar111/wasm/fib.wat | |
parent | ca09b8229ba680d5e5400ed72b121e8302990dab (diff) |
wasm lol
Diffstat (limited to 'entries/adirar111/wasm/fib.wat')
-rw-r--r-- | entries/adirar111/wasm/fib.wat | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/entries/adirar111/wasm/fib.wat b/entries/adirar111/wasm/fib.wat new file mode 100644 index 0000000..b9eba78 --- /dev/null +++ b/entries/adirar111/wasm/fib.wat @@ -0,0 +1,46 @@ +;; iterative fib(n) in web assembly text format (wat) +;; this gets compiled to fib.wasm binary +;; and gets fetched via a data URL in index.js +(module + (export "fib" (func $fib)) + (func $fib (param $n i32) (result i32) + (local $last i32) + (local $sum i32) + (local $i i32) + (local $tmp i32) + (if + (i32.lt_s + (local.get $n) + (i32.const 2) + ) + (return (local.get $n)) + ) + (local.set $last (i32.const 0)) + (local.set $sum (i32.const 1)) + (local.set $i (i32.const 2)) + (local.set $n (i32.add (local.get $n) (i32.const 1))) + (loop $loop + (local.set $tmp (local.get $sum)) + (local.set $sum + (i32.add + (local.get $sum) + (local.get $last) + ) + ) + (local.set $last (local.get $tmp)) + (local.set $i + (i32.add + (local.get $i) + (i32.const 1) + ) + ) + (br_if $loop + (i32.lt_s + (local.get $i) + (local.get $n) + ) + ) + ) + (return (local.get $sum)) + ) +) |