aboutsummaryrefslogtreecommitdiffstats
path: root/src/x86_64
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-11-09 17:42:59 +0100
committerBad Diode <bd@badd10de.dev>2021-11-09 17:42:59 +0100
commited96e5e915c5380f0a073ed49d6786b07db68439 (patch)
treeb6c547806196844c8a5be5b9ae5db765327b24b7 /src/x86_64
parent12ae1f331e79f769f01d2aa70608868f16667516 (diff)
downloadbdl-ed96e5e915c5380f0a073ed49d6786b07db68439.tar.gz
bdl-ed96e5e915c5380f0a073ed49d6786b07db68439.zip
Add display functionality for lambda objects
Diffstat (limited to 'src/x86_64')
-rw-r--r--src/x86_64/prelude.asm18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/x86_64/prelude.asm b/src/x86_64/prelude.asm
index abb069b..81a2633 100644
--- a/src/x86_64/prelude.asm
+++ b/src/x86_64/prelude.asm
@@ -82,6 +82,15 @@ printstring:
82 syscall 82 syscall
83 ret 83 ret
84 84
85printlambda:
86 mov rsi, lambda_str
87 mov rdx, [rsi]
88 add rsi, 8
89 mov rax, 1
90 mov rdi, 1
91 syscall
92 ret
93
85display: 94display:
86 ;; is nil? 95 ;; is nil?
87 mov rax, rdi 96 mov rax, rdi
@@ -106,6 +115,15 @@ not_bool:
106 ret 115 ret
107not_string: 116not_string:
108 117
118 ;; is lambda?
119 mov rax, rdi
120 and rax, LAMBDA_MASK
121 cmp rax, LAMBDA_TAG
122 jne not_lambda
123 call printlambda
124 ret
125not_lambda:
126
109 ;; is fixnum? 127 ;; is fixnum?
110 mov rax, rdi 128 mov rax, rdi
111 and rax, FIXNUM_MASK 129 and rax, FIXNUM_MASK