From 7cbef14e8393475b1e569fdbfff2c46db859d43f Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Thu, 4 Nov 2021 11:58:53 +0100 Subject: Add `cons`, `car` and `cdr` primitives --- src/x86_64/postlude.asm | 4 ++++ src/x86_64/prelude.asm | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/x86_64') diff --git a/src/x86_64/postlude.asm b/src/x86_64/postlude.asm index 3355286..37f9df1 100644 --- a/src/x86_64/postlude.asm +++ b/src/x86_64/postlude.asm @@ -9,3 +9,7 @@ exit: mov rax, 60 xor rdi, rdi syscall + +section .bss +bdl_heap: + resb HEAP_SIZE diff --git a/src/x86_64/prelude.asm b/src/x86_64/prelude.asm index 6bb6627..e57e820 100644 --- a/src/x86_64/prelude.asm +++ b/src/x86_64/prelude.asm @@ -1,3 +1,4 @@ +section .text printdln: sar rdi, FIXNUM_SHIFT sub rsp, 40 @@ -98,4 +99,8 @@ display_end: global _start _start: - push NIL_VAL + ;; point `rdi` to the start of the heap. + mov rsi, bdl_heap + + ;; make sure the last element in the stack is the nil value. + push NIL_VAL -- cgit v1.2.1