aboutsummaryrefslogtreecommitdiffstats
path: root/src/x86_64/prelude.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/x86_64/prelude.asm')
-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