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.asm23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/x86_64/prelude.asm b/src/x86_64/prelude.asm
index 3ad33f7..c9ef823 100644
--- a/src/x86_64/prelude.asm
+++ b/src/x86_64/prelude.asm
@@ -71,10 +71,16 @@ bool_write:
71 syscall 71 syscall
72 ret 72 ret
73 73
74true_str: 74printstring:
75 db "true", 10 75 mov rsi, rdi
76false_str: 76 mov rax, STRING_INV_MASK
77 db "false", 10 77 and rsi, rax
78 mov rdx, [rsi]
79 add rsi, 8
80 mov rax, 1
81 mov rdi, 1
82 syscall
83 ret
78 84
79display: 85display:
80 ;; is nil? 86 ;; is nil?
@@ -91,6 +97,15 @@ display:
91 ret 97 ret
92not_bool: 98not_bool:
93 99
100 ;; is string?
101 mov rax, rdi
102 and rax, STRING_MASK
103 cmp rax, STRING_TAG
104 jne not_string
105 call printstring
106 ret
107not_string:
108
94 ;; is fixnum? 109 ;; is fixnum?
95 mov rax, rdi 110 mov rax, rdi
96 call printdln 111 call printdln