we're going stack based i aint doing reg allocation
This commit is contained in:
@@ -56,7 +56,7 @@ char* cometOperandToCStr(CometOperand operand) {
|
||||
case CO_IMMEDIATE:
|
||||
return cometImmediateToCStr(operand.imm);
|
||||
|
||||
case CO_REG: {
|
||||
case CO_STACK: {
|
||||
char* buffer = malloc(64);
|
||||
sprintf(buffer, "%%%d", operand.reg);
|
||||
return buffer;
|
||||
@@ -108,8 +108,8 @@ CometOperand buildAdd(
|
||||
CometOperand a,
|
||||
CometOperand b
|
||||
) {
|
||||
CometOperand reg = createOperand(CO_REG);
|
||||
reg.reg = c->regIdx++;
|
||||
CometOperand reg = createOperand(CO_STACK);
|
||||
reg.reg = c->stackIdx++;
|
||||
|
||||
buildInst(c, INST_ADD, reg, a, b);
|
||||
|
||||
@@ -120,7 +120,7 @@ ResultType(cometCompilerPtr, charptr) newCompiler() {
|
||||
CometCompiler* newCompiler = calloc(sizeof(CometCompiler), 1);
|
||||
|
||||
newCompiler->programIdx = 0;
|
||||
newCompiler->regIdx = 0;
|
||||
newCompiler->stackIdx = 0;
|
||||
|
||||
return Success(cometCompilerPtr, charptr, newCompiler);
|
||||
}
|
||||
10
src/inst.h
10
src/inst.h
@@ -17,7 +17,7 @@ typedef enum {
|
||||
} CometValueTypeKind;
|
||||
|
||||
typedef enum {
|
||||
CO_REG,
|
||||
CO_STACK,
|
||||
CO_IMMEDIATE
|
||||
} CometOperandKind;
|
||||
|
||||
@@ -55,15 +55,9 @@ typedef struct {
|
||||
|
||||
#define NO_OPERAND ((CometOperand){0})
|
||||
|
||||
typedef struct {
|
||||
CometValueTypeKind inferredType;
|
||||
bool alive;
|
||||
} CometTemp;
|
||||
|
||||
typedef struct {
|
||||
size_t programIdx;
|
||||
size_t regIdx;
|
||||
CometTemp temps[256];
|
||||
size_t stackIdx;
|
||||
CometInst outputProgram[256];
|
||||
} CometCompiler;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user