1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-21 02:27:10 +03:00
mal/wasm/step0_repl.wam
Joel Martin ed13313d87 wasm: direct platform, wam memory
- Rename platform_os.wam to platform_direct.wam and update the direct
  interface to use printline instead of fputs/stdout.
- Update to wamp 1.0.7 and new memory/memoryBase semantics: in
  platform_direct and platform_libc, import memory and memoryBase
  rather than relying on wamp to add it because wamp add direct memory
  and memoryBase defintions (not imports) if the program doesn't
  already define or import memory/memoryBase.
- Simplify entry point logic by moving it into the platform files.
2019-04-15 00:57:59 -05:00

50 lines
1018 B
Plaintext

(module $step0_repl
;; READ
(func $READ (param $str i32) (result i32)
$str
)
(func $EVAL (param $ast i32) (param $env i32) (result i32)
$ast
)
;; PRINT
(func $PRINT (param $ast i32) (result i32)
$ast
)
;; REPL
(func $rep (param $line i32) (result i32)
($PRINT ($EVAL ($READ $line) 0))
)
(func $main (param $argc i32 $argv i32) (result i32)
;; Constant location/value definitions
(LET $line (STATIC_ARRAY 201))
;; DEBUG
;;($printf_1 "memoryBase: 0x%x\n" (global.get $memoryBase))
;; Start REPL
(block $repl_done
(loop $repl_loop
(br_if $repl_done (i32.eqz ($readline "user> " $line)))
(br_if $repl_loop (i32.eq (i32.load8_u $line) 0))
($printf_1 "%s\n" ($rep $line))
(br $repl_loop)
)
)
($print "\n")
0
)
;; init_memory is provided by mem.wam in later steps but we just
;; printf in step0 so provide init_memory that just calls that
(func $init_memory
($init_printf_mem)
)
)