Implemented getuint and fixed a bug with variables

This commit is contained in:
cannoli-fruit 2026-07-26 17:49:29 -04:00
commit 022e812c1d
7 changed files with 75 additions and 1 deletions

View file

@ -366,6 +366,19 @@ codegen:
printf(" pushstack 112\n");
break;
}
if (SBeq(&tokenAccumulator, "u<")) {
printf(" popstack 97\n");
printf(" popstack 98\n");
printf(" Cmp64 98, 97\n");
printf(" JmpIN __Cmp%d\n", counter);
printf(" MovI64 112, 0\n");
printf(" Jmp __DoneCmp%d\n", counter);
printf("__Cmp%d:\n", counter);
printf(" MovI64 112, 1\n");
printf("__DoneCmp%d:\n", counter);
printf(" pushstack 112\n");
break;
}
if (SBeq(&tokenAccumulator, "pop")) {
printf(" popstack 113\n");
break;
@ -416,7 +429,7 @@ codegen:
if (tokenAccumulator.cnt < 128) {
memcpy(varName, tokenAccumulator.data+1,
tokenAccumulator.cnt-1);
varName[tokenAccumulator.cnt] = 0;
varName[tokenAccumulator.cnt-1] = 0;
} else {
memcpy(varName, tokenAccumulator.data+1, 127);
varName[127] = 0;
@ -439,6 +452,7 @@ codegen:
allocHead += 8;
}
printf(" popstack 120\n");
printf(" ; %s:%s\n", funcName, varName);
printf(" MovI64 121, 0x%16lX\n", addr);
printf(" St64 120, 121\n");
break;