✨ Adds closing and comma cases
This commit is contained in:
parent
cbedaa7f06
commit
eab87f939c
51
main.asm
51
main.asm
@ -10,6 +10,7 @@ STDERR equ 0x2
|
|||||||
ACTION_LOOP equ 0x0
|
ACTION_LOOP equ 0x0
|
||||||
ACTION_CHAR equ 0x1
|
ACTION_CHAR equ 0x1
|
||||||
ACTION_BACK_TO_OPENING equ 0x2
|
ACTION_BACK_TO_OPENING equ 0x2
|
||||||
|
ACTION_BACK_TO_COMMA equ 0x3
|
||||||
|
|
||||||
section .data
|
section .data
|
||||||
space db " "
|
space db " "
|
||||||
@ -58,6 +59,12 @@ _start:
|
|||||||
je case_opening
|
je case_opening
|
||||||
cmp al, [opening_bracket]
|
cmp al, [opening_bracket]
|
||||||
je case_opening
|
je case_opening
|
||||||
|
cmp al, [closing_curly]
|
||||||
|
je case_closing
|
||||||
|
cmp al, [closing_bracket]
|
||||||
|
je case_closing
|
||||||
|
cmp al, [comma]
|
||||||
|
je case_comma
|
||||||
|
|
||||||
mov r15, ACTION_LOOP
|
mov r15, ACTION_LOOP
|
||||||
jmp print_char
|
jmp print_char
|
||||||
@ -75,13 +82,25 @@ _start:
|
|||||||
jmp print_char
|
jmp print_char
|
||||||
|
|
||||||
case_opening:
|
case_opening:
|
||||||
mov r5, ACTION_BACK_TO_OPENING
|
mov r15, ACTION_BACK_TO_OPENING
|
||||||
jmp print_char
|
jmp print_char
|
||||||
|
case_opening_back:
|
||||||
inc byte[scope]
|
inc byte[scope]
|
||||||
|
jmp ln_start
|
||||||
|
|
||||||
;je ln_start
|
case_closing:
|
||||||
;jmp loop
|
dec byte[scope]
|
||||||
|
mov r15, ACTION_CHAR
|
||||||
|
jmp ln_start
|
||||||
|
|
||||||
|
case_comma:
|
||||||
|
mov r15, ACTION_BACK_TO_COMMA
|
||||||
|
jmp print_char
|
||||||
|
case_comma_back:
|
||||||
|
mov al, [escape_next]
|
||||||
|
cmp al, 0
|
||||||
|
je ln_start
|
||||||
|
jmp loop
|
||||||
|
|
||||||
print_char:
|
print_char:
|
||||||
mov rax, SYS_WRITE
|
mov rax, SYS_WRITE
|
||||||
@ -90,8 +109,12 @@ _start:
|
|||||||
mov rdx, 1
|
mov rdx, 1
|
||||||
int 0x80
|
int 0x80
|
||||||
|
|
||||||
cmp r15, ACTION_LOOP
|
cmp r15, ACTION_BACK_TO_OPENING
|
||||||
je loop
|
je case_opening_back
|
||||||
|
cmp r15, ACTION_BACK_TO_COMMA
|
||||||
|
je case_comma_back
|
||||||
|
|
||||||
|
jmp loop
|
||||||
|
|
||||||
ln_start:
|
ln_start:
|
||||||
xor r8, r8
|
xor r8, r8
|
||||||
@ -103,8 +126,19 @@ _start:
|
|||||||
imul rax, rbx
|
imul rax, rbx
|
||||||
mov r9, rax
|
mov r9, rax
|
||||||
|
|
||||||
|
mov rax, SYS_WRITE
|
||||||
|
mov rbx, STDOUT
|
||||||
|
mov rcx, endl
|
||||||
|
mov rdx, 1
|
||||||
|
int 0x80
|
||||||
|
|
||||||
cmp qword[scope], 0
|
cmp qword[scope], 0
|
||||||
je loop
|
jne ln_loop
|
||||||
|
|
||||||
|
ln_end:
|
||||||
|
cmp r15, ACTION_CHAR
|
||||||
|
je print_char
|
||||||
|
jmp loop
|
||||||
|
|
||||||
ln_loop:
|
ln_loop:
|
||||||
mov rax, SYS_WRITE
|
mov rax, SYS_WRITE
|
||||||
@ -116,7 +150,8 @@ _start:
|
|||||||
inc r8
|
inc r8
|
||||||
cmp r8, r9
|
cmp r8, r9
|
||||||
jne ln_loop
|
jne ln_loop
|
||||||
je loop
|
|
||||||
|
jmp ln_end
|
||||||
|
|
||||||
end:
|
end:
|
||||||
mov rax, SYS_EXIT
|
mov rax, SYS_EXIT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user