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);
|
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:
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user