From 9d1217993dff44c0d73ab102db5d714dd57a6f92 Mon Sep 17 00:00:00 2001 From: Annie Date: Tue, 6 May 2025 23:14:11 -0400 Subject: [PATCH] ors seem to work --- src/codegen.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/codegen.c b/src/codegen.c index 44d39df..67a625f 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -527,7 +527,23 @@ int generateAssign(Instruction *inst) { //add option for constant assignment (should be easy) if (isConst(op1) == true) { - fprintf(cg_flag, "\tmovl\t$%d, %d(%%rbp)\t#constant assign\n", getConst(op1), getAddress(cg)); + char *movtype; + char *reg; + TableNode *typetn = getTypeEntry(getResult(inst)); + if (typetn == integ) { + movtype = "movl"; + reg = "%eax"; + } else if (typetn == boo) { + movtype = "movb"; + reg = "%al"; + } else if (typetn == chara) { + movtype = "movb"; + reg = "%al"; + } else { + movtype = "movq"; + reg = "%rax"; + } + fprintf(cg_flag, "\t%s\t$%d, %d(%%rbp)\t#constant assign\n",movtype, getConst(op1), getAddress(cg)); return 0; }