lang/src/start.s
2025-04-30 18:33:40 +02:00

84 lines
1.2 KiB
ArmAsm

section .data
usage: db "Usage: ./debug <file>.lang", 0xa, 0
section .text
global _start
extern exit
extern err_args
extern get_file_content
extern putstr
extern lex
extern vec_create
extern vec_push
extern vec_get
extern putchar
print_usage:
mov rdi, usage
call putstr
_start:
push rbp
mov rbp, rsp
sub rsp, 16
mov rdi, 1
call vec_create
mov rdi, rax
xor rcx, rcx
mov rbx, 95
mov r8, ' '
.loop:
cmp rcx, rbx
je .done
push rcx
push r8
mov byte [rbp - 4], r8b
lea rsi, [rbp - 4]
push rdi
call vec_push
pop rdi
pop r8
pop rcx
inc r8
inc rcx
jmp .loop
.done:
push rdi
mov rdi, [rdi + 16]
call putstr
pop rdi
lea rsi, [rbp - 1]
mov rdx, 94
call vec_get
test rax, rax
jz done
mov dil, byte [rbp - 1]
call putchar
; pop rdi
; cmp rdi, 2
; jne err_args
; mov rdi, [rsp + 8] ; argv[1]
; push rbp
; mov rbp, rsp
;
; sub rsp, 16
;
; call get_file_content
; mov rdi, rax
; mov [rbp - 8], rax
;
; mov rdi, rax
; call lex
;
; mov rsp, rbp
; pop rbp
done:
xor rdi, rdi
call exit