From ac0a10fafd5745f5c50539a079340504f5e060ad Mon Sep 17 00:00:00 2001 From: andromeda Date: Wed, 18 Mar 2026 20:45:12 +0100 Subject: [PATCH] finally change .gitignore, correctly handle register operands --- .gitignore | 1 + twasm/.bootle/disk | Bin 1474560 -> 0 bytes twasm/asm/main.asm | 25 ++++++++++++++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) delete mode 100644 twasm/.bootle/disk diff --git a/.gitignore b/.gitignore index fcfc4a1..bd6fbc7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ result* +.bootle* diff --git a/twasm/.bootle/disk b/twasm/.bootle/disk deleted file mode 100644 index 995de23fe32b8dbf9ae7f18386b5eabc83f846e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1474560 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 z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!83@Fd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?3PwXRZa(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7zLvtFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;6Cw1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtqq)hQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin yXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb23O5C8y-3U_$` diff --git a/twasm/asm/main.asm b/twasm/asm/main.asm index 8b2d7ef..9c8d483 100644 --- a/twasm/asm/main.asm +++ b/twasm/asm/main.asm @@ -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