Compare commits
2 Commits
83959b4793
...
cf5f58f1bc
Author | SHA1 | Date | |
---|---|---|---|
cf5f58f1bc | |||
c2c4d2f1d5 |
|
@ -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);
|
||||
|
||||
switch(Type) {
|
||||
case PTR_CHAR:
|
||||
case RET_CHAR:
|
||||
fprintf(OutputFile, "\tmovb\t%s, (%s)\n", ByteRegisters[Register1], Registers[Register2]);
|
||||
break;
|
||||
case PTR_INT:
|
||||
fprintf(OutputFile, "\tmovq\t%s, (%s)\n", Registers[Register1], Registers[Register2]);
|
||||
break;
|
||||
case PTR_LONG:
|
||||
case RET_INT:
|
||||
case RET_LONG:
|
||||
fprintf(OutputFile, "\tmovq\t%s, (%s)\n", Registers[Register1], Registers[Register2]);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -29,6 +29,7 @@ int ValueAt(int Type) {
|
|||
printf("\t\tDereferencing a %s\n", TypeNames[Type]);
|
||||
//TODO: this is still bullshittery!
|
||||
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;
|
||||
} else {
|
||||
DieDecimal("Unable to dereference type", Type);
|
||||
|
@ -89,7 +90,7 @@ struct ASTNode* AccessArray() {
|
|||
RightNode = MutateType(RightNode, LeftNode->ExprType, OP_ADD);
|
||||
|
||||
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);
|
||||
printf("\tArray Access constructed\r\n");
|
||||
return LeftNode;
|
||||
|
|
Loading…
Reference in New Issue
Block a user