|
|
|
@ -160,25 +160,34 @@
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
(func $writeNum (param $number i32)
|
|
|
|
|
loop $digitLoop
|
|
|
|
|
local.get $number
|
|
|
|
|
i32.const 10
|
|
|
|
|
i32.rem_u
|
|
|
|
|
|
|
|
|
|
(local $digit i32)
|
|
|
|
|
;; store lowest digit
|
|
|
|
|
local.get $number
|
|
|
|
|
i32.const 10
|
|
|
|
|
i32.rem_u
|
|
|
|
|
local.set $digit
|
|
|
|
|
|
|
|
|
|
;; divide number by 10
|
|
|
|
|
local.get $number
|
|
|
|
|
i32.const 10
|
|
|
|
|
i32.div_u
|
|
|
|
|
local.tee $number
|
|
|
|
|
|
|
|
|
|
;; base case
|
|
|
|
|
i32.eqz
|
|
|
|
|
if
|
|
|
|
|
local.get $digit
|
|
|
|
|
call $writeDigit
|
|
|
|
|
|
|
|
|
|
local.get $number
|
|
|
|
|
i32.const 10
|
|
|
|
|
i32.div_u
|
|
|
|
|
local.tee $number
|
|
|
|
|
|
|
|
|
|
i32.eqz
|
|
|
|
|
if
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
br $digitLoop
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
;; recurse (to print other digits)
|
|
|
|
|
local.get $number
|
|
|
|
|
call $writeNum
|
|
|
|
|
|
|
|
|
|
;; print our digit
|
|
|
|
|
local.get $digit
|
|
|
|
|
call $writeDigit
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
(func $writeDigit (param $digit i32)
|
|
|
|
|