diff options
Diffstat (limited to 'src/x86_64/postlude.asm')
-rw-r--r-- | src/x86_64/postlude.asm | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/src/x86_64/postlude.asm b/src/x86_64/postlude.asm index 5c8e56f..3355286 100644 --- a/src/x86_64/postlude.asm +++ b/src/x86_64/postlude.asm | |||
@@ -2,29 +2,7 @@ | |||
2 | _start_return: | 2 | _start_return: |
3 | ;; return the last value in the stack | 3 | ;; return the last value in the stack |
4 | pop rdi | 4 | pop rdi |
5 | 5 | call display | |
6 | ;; is nil? | ||
7 | mov rax, rdi | ||
8 | cmp rax, NIL_VAL | ||
9 | je exit | ||
10 | |||
11 | ;; is boolean? | ||
12 | mov rax, rdi | ||
13 | and rax, BOOL_MASK | ||
14 | cmp rax, BOOL_TAG | ||
15 | jne not_bool | ||
16 | call printbool | ||
17 | jmp exit | ||
18 | not_bool: | ||
19 | |||
20 | ;; is fixnum? | ||
21 | mov rax, rdi | ||
22 | and rax, FIXNUM_MASK | ||
23 | cmp rax, FIXNUM_TAG | ||
24 | jne not_fixnum | ||
25 | call printdln | ||
26 | jmp exit | ||
27 | not_fixnum: | ||
28 | 6 | ||
29 | exit: | 7 | exit: |
30 | ; exit syscall | 8 | ; exit syscall |