Compare commits

..

2 Commits

Author SHA1 Message Date
cf5f58f1bc
Small cleanup of print output. 2020-11-21 02:32:46 +00:00
c2c4d2f1d5
Brute force fix for arrays. TODO: Investigate this. 2020-11-21 02:32:22 +00:00
2 changed files with 5 additions and 6 deletions

View File

@ -463,13 +463,11 @@ int AsStrDeref(int Register1, int Register2, int Type) {
printf("\tStoring contents of %s into %s through a dereference, type %d\n", Registers[Register1], Registers[Register2], Type); printf("\tStoring contents of %s into %s through a dereference, type %d\n", Registers[Register1], Registers[Register2], Type);
switch(Type) { switch(Type) {
case PTR_CHAR: case RET_CHAR:
fprintf(OutputFile, "\tmovb\t%s, (%s)\n", ByteRegisters[Register1], Registers[Register2]); fprintf(OutputFile, "\tmovb\t%s, (%s)\n", ByteRegisters[Register1], Registers[Register2]);
break; break;
case PTR_INT: case RET_INT:
fprintf(OutputFile, "\tmovq\t%s, (%s)\n", Registers[Register1], Registers[Register2]); case RET_LONG:
break;
case PTR_LONG:
fprintf(OutputFile, "\tmovq\t%s, (%s)\n", Registers[Register1], Registers[Register2]); fprintf(OutputFile, "\tmovq\t%s, (%s)\n", Registers[Register1], Registers[Register2]);
break; break;
default: default:

View File

@ -29,6 +29,7 @@ int ValueAt(int Type) {
printf("\t\tDereferencing a %s\n", TypeNames[Type]); printf("\t\tDereferencing a %s\n", TypeNames[Type]);
//TODO: this is still bullshittery! //TODO: this is still bullshittery!
if(Type >= PTR_CHAR && Type <= PTR_VOID) { if(Type >= PTR_CHAR && Type <= PTR_VOID) {
printf("\t\t\tDereference of %s is %s.\r\n", TypeNames[Type], TypeNames[Type - 4]);
return Type - 4; return Type - 4;
} else { } else {
DieDecimal("Unable to dereference type", Type); DieDecimal("Unable to dereference type", Type);
@ -89,7 +90,7 @@ struct ASTNode* AccessArray() {
RightNode = MutateType(RightNode, LeftNode->ExprType, OP_ADD); RightNode = MutateType(RightNode, LeftNode->ExprType, OP_ADD);
LeftNode = ConstructASTNode(OP_ADD, Symbols[ID].Type, LeftNode, NULL, RightNode, 0); LeftNode = ConstructASTNode(OP_ADD, Symbols[ID].Type, LeftNode, NULL, RightNode, 0);
printf("\t\t\tAccessArray: Preparing LeftNode for dereference.\r\n"); printf("\tAccessArray: Preparing LeftNode for dereference.\r\n");
LeftNode = ConstructASTBranch(OP_DEREF, ValueAt(LeftNode->ExprType), LeftNode, 0); LeftNode = ConstructASTBranch(OP_DEREF, ValueAt(LeftNode->ExprType), LeftNode, 0);
printf("\tArray Access constructed\r\n"); printf("\tArray Access constructed\r\n");
return LeftNode; return LeftNode;