-MODE ?= $(if $(filter node js wace_fooboot warpy,$(wasm_MODE)),os,libc)
+MODE ?= $(if $(filter node js wace_fooboot warpy,$(wasm_MODE)),direct,libc)
WASM_AS ?= wasm-as
WAMP ?= node_modules/.bin/wamp
"version": "0.0.1",
"description": "Make a Lisp (mal) language implemented in WebAssembly",
"dependencies": {
- "@kanaka/wamp": "1.0.6",
+ "@kanaka/wamp": "1.0.7",
"ffi-napi": "^2.4.4",
"text-encoding": "0.6.4"
}
(module $platform_os
+ (import "env" "memory" (memory 256))
+ (import "env" "memoryBase" (global $memoryBase i32))
+
(import "env" "exit" (func $lib_exit (param i32)))
- (import "env" "stdout" (global $lib_stdout i32))
- (import "env" "fputs" (func $lib_fputs (param i32 i32) (result i32)))
+ (import "env" "printline" (func $lib_printline (param i32) (result i32)))
(import "env" "readline" (func $lib_readline (param i32 i32 i32) (result i32)))
(import "env" "read_file" (func $lib_read_file (param i32 i32) (result i32)))
(import "env" "get_time_ms" (func $lib_get_time_ms (result i32)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(func $print (param $addr i32)
- (drop ($lib_fputs $addr (global.get $lib_stdout))))
+ (drop ($lib_printline $addr))
+ )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
($lib_get_time_ms)
)
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ (func $entry (param $argc i32 $argv i32)
+ ($init_memory)
+ ($lib_exit ($main $argc $argv))
+ )
+
+ (export "_main" (func $entry))
+
)
(module $platform_libc
- (import "env" "exit" (func $lib_exit (param i32)))
-
- (import "env" "stdout" (global $lib_stdout i32))
- (import "env" "fputs" (func $lib_fputs (param i32 i32) (result i32)))
-
- (import "env" "free" (func $lib_free (param i32)))
- (import "env" "readline" (func $lib_readline (param i32) (result i32)))
+ (import "env" "memory" (memory 256))
+ (import "env" "memoryBase" (global $memoryBase i32))
+
+ (import "env" "exit" (func $lib_exit (param i32)))
+ (import "env" "stdout" (global $lib_stdout i32))
+ (import "env" "fputs" (func $lib_fputs (param i32 i32) (result i32)))
+ (import "env" "readline" (func $lib_readline (param i32) (result i32)))
+ (import "env" "free" (func $lib_free (param i32)))
(import "env" "add_history" (func $lib_add_history (param i32)))
;; read_file defintions / FFI information
(i32.div_u $usecs 1000)))
$msecs
)
+
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ (func $entry (param $argc i32 $argv i32)
+ ($init_memory)
+ ($lib_exit ($main $argc $argv))
+ )
+
+ (export "_main" (func $entry))
+
)
($PRINT ($EVAL ($READ $line) 0))
)
- (func $main (result i32)
+ (func $main (param $argc i32 $argv i32) (result i32)
;; Constant location/value definitions
(LET $line (STATIC_ARRAY 201))
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_printf_mem))
+ ;; 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)
+ )
)
$ms
)
- (func $main (result i32)
+ (func $main (param $argc i32 $argv i32) (result i32)
(LET $line (STATIC_ARRAY 201)
$res 0)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
(i32.div_s ($VAL0 ($MEM_VAL1_ptr $args))
($VAL0 ($MEM_VAL1_ptr ($MEM_VAL0_ptr $args))))))
- (func $main (result i32)
+ (func $main (param $argc i32 $argv i32) (result i32)
(LET $line (STATIC_ARRAY 201)
$res 0 $repl_env 0)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
($PR_MEMORY -1 -1)
($INC_REF (global.get $NIL)))
- (func $main (result i32)
+ (func $main (param $argc i32 $argv i32) (result i32)
(LET $line (STATIC_ARRAY 201)
$res 0 $repl_env 0)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
$ms
)
- (func $main (result i32)
+ (func $main (param $argc i32 $argv i32) (result i32)
(LET $line (STATIC_ARRAY 201)
$res 0 $repl_env 0 $ms 0)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
$ms
)
- (func $main (result i32)
+ (func $main (param $argc i32 $argv i32) (result i32)
(LET $line (STATIC_ARRAY 201)
$res 0 $repl_env 0 $ms 0)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)
0
)
-
- (export "_main" (func $main))
- (export "__post_instantiate" (func $init_memory))
)