Implemented getuint and fixed a bug with variables
This commit is contained in:
parent
441d737cf1
commit
022e812c1d
7 changed files with 75 additions and 1 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue