we're going stack based i aint doing reg allocation

This commit is contained in:
2026-05-25 18:01:24 +10:00
parent e2c0015c24
commit 4f764aa21e
2 changed files with 6 additions and 12 deletions

View File

@@ -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);
}

View File

@@ -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;