From ee1a5de91c875fb66724dc21c02333bfebe2a812 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 1 Feb 2022 18:36:52 +0100 Subject: Add new syntax to lexer and prepare refactor --- src/x86_64/postlude.asm | 12 ----- src/x86_64/prelude.asm | 134 ------------------------------------------------ 2 files changed, 146 deletions(-) delete mode 100644 src/x86_64/postlude.asm delete mode 100644 src/x86_64/prelude.asm (limited to 'src/x86_64') diff --git a/src/x86_64/postlude.asm b/src/x86_64/postlude.asm deleted file mode 100644 index 45be7ee..0000000 --- a/src/x86_64/postlude.asm +++ /dev/null @@ -1,12 +0,0 @@ - -_start_return: - ;; return the last value in the stack - pop rdi - call display - -exit: - ;; exit syscall - mov rax, 60 - xor rdi, rdi - syscall - diff --git a/src/x86_64/prelude.asm b/src/x86_64/prelude.asm deleted file mode 100644 index 81a2633..0000000 --- a/src/x86_64/prelude.asm +++ /dev/null @@ -1,134 +0,0 @@ -section .text -printdln: - sar rdi, FIXNUM_SHIFT - sub rsp, 40 - mov BYTE [rsp+31], 10 - test rdi, rdi - jne .L2 - mov BYTE [rsp+30], 48 - mov eax, 30 - mov r8d, 2 -.L3: - lea rsi, [rsp+rax] - mov rdx, r8 - mov rdi, 1 - mov rax, 1 - syscall - add rsp, 40 - ret -.L2: - mov r10d, 1 - js .L12 -.L4: - mov r8d, 1 - lea r9, [rsp+31] - mov rsi, -3689348814741910323 -.L5: - mov rax, rdi - mov rcx, r9 - mul rsi - sub rcx, r8 - shr rdx, 3 - lea rax, [rdx+rdx*4] - add rax, rax - sub rdi, rax - mov rax, r8 - add r8, 1 - add edi, 48 - mov BYTE [rcx], dil - mov rdi, rdx - test rdx, rdx - jne .L5 - cmp r10d, -1 - jne .L10 - not r8 - mov BYTE [rsp+32+r8], 45 - lea r8, [rax+2] -.L10: - mov eax, 32 - sub rax, r8 - jmp .L3 -.L12: - neg rdi - mov r10d, -1 - jmp .L4 - ret - -printbool: - shr rdi, BOOL_SHIFT - cmp rdi, 0 - je print_false - mov rsi, true_str ; addr - mov rdx, 5 ; number of bytes - jmp bool_write -print_false: - mov rsi, false_str ; addr - mov rdx, 6 ; number of bytes - -bool_write: - mov rax, 1 - mov rdi, 1 - syscall - ret - -printstring: - mov rsi, rdi - mov rax, PTR_MASK - and rsi, rax - mov rdx, [rsi] - add rsi, 8 - mov rax, 1 - mov rdi, 1 - syscall - ret - -printlambda: - mov rsi, lambda_str - mov rdx, [rsi] - add rsi, 8 - mov rax, 1 - mov rdi, 1 - syscall - ret - -display: - ;; is nil? - mov rax, rdi - cmp rax, NIL_VAL - je display_end - - ;; is boolean? - mov rax, rdi - and rax, BOOL_MASK - cmp rax, BOOL_TAG - jne not_bool - call printbool - ret -not_bool: - - ;; is string? - mov rax, rdi - and rax, STRING_MASK - cmp rax, STRING_TAG - jne not_string - call printstring - ret -not_string: - - ;; is lambda? - mov rax, rdi - and rax, LAMBDA_MASK - cmp rax, LAMBDA_TAG - jne not_lambda - call printlambda - ret -not_lambda: - - ;; is fixnum? - mov rax, rdi - and rax, FIXNUM_MASK - cmp rax, FIXNUM_TAG - jne display_end - call printdln -display_end: - ret -- cgit v1.2.1