finally change .gitignore, correctly handle register operands

This commit is contained in:
andromeda
2026-03-18 20:45:12 +01:00
parent 2e222c304a
commit ac0a10fafd
3 changed files with 25 additions and 1 deletions

Binary file not shown.

View File

@@ -635,6 +635,10 @@ tokenise:
test byte [.expecting], E_OPERAND ; make sure an operand was expected
jz .unexpected_operand ; if not, error
push rax
push rdi
xor eax, eax ; rax = length of operand
.operand_loop:
mov dl, [rdi]
@@ -645,10 +649,29 @@ tokenise:
cmp dl, 0x00
je .operand_break
inc rdi
inc rax ; inc length counter
inc rdi ; inc byte pointer
jmp .operand_loop
.operand_break:
pop rdi ; rdi = first byte of operand
push rdi
push rsi
mov rsi, rax ; rsi = length of operand in bytes
mov cx, ax ; cx = length counter for safe keeping
call evaluate_operand
; ax = register's token ID
pop rsi
pop rdi ; rdi = first byte of operand
add di, cx ; rdi = last byte of operand
mov cx, ax ; cx = register's token ID for safe keeping
pop rax ; rax = number of tokens processed
mov [TOKEN_TABLE_ADDR + rax * TOKEN_TABLE_ENTRY_SIZE], cx
inc rax ; another token processed
mov byte [.expecting], E_COMMENT | E_NEWLINE | E_WHITESPACE | E_COMMA
jmp .loop