Skip to content
Snippets Groups Projects
Commit b8cd191b authored by FlorianKrull's avatar FlorianKrull
Browse files

Added array, commented offset temporary printf

parent 148859d4
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,7 @@ struct mcc_assembly_offset *find_var(char *temp, struct mcc_asm_gen_container *a
struct mcc_assembly_offset *a_offset = NULL;
for (int i = 0; i < asm_container -> variable_offsets -> size; i++) {
struct mcc_assembly_offset *ao = (struct mcc_assembly_offset *) asm_container -> variable_offsets -> arr[i];
printf("%s %s\n", temp, ao -> temporary);
// printf("%s %s\n", temp, ao -> temporary);
if (strcmp(ao->temporary, temp) == 0) {
a_offset = ao;
break;
......@@ -86,6 +86,15 @@ void asm_gen_assignment_float(FILE *out, struct mcc_tac_entry *te, struct mcc_as
fprintf(out, "\tfstps %d(%%ebp)\n",mcc_assembly_get_current_offset(asm_container));
}
void asm_gen_param(FILE *out, struct mcc_tac_entry *te, struct mcc_asm_gen_container *asm_container) {
fprintf(out, "\tpushl\t%d(%%ebp)\n", mcc_assembly_get_current_offset(asm_container));
}
void asm_gen_param_array(FILE *out, struct mcc_tac_entry *te, struct mcc_asm_gen_container *asm_container) {
fprintf(out, "\tleal\t%d(%%ebp), %%eax\n", mcc_assembly_get_current_offset(asm_container));
fprintf(out, "\tpushl\t%%eax\n");
}
void asm_gen_binary_int_op(FILE *out, struct mcc_tac_entry *te, struct mcc_asm_gen_container *asm_container)
{
fprintf(out, "\tmovl\t%d(%%ebp), %%eax\n", mcc_assembly_get_current_offset(asm_container));
......@@ -187,6 +196,19 @@ void mcc_asm_gen(FILE *out, struct mcc_tac *tac, struct mcc_asm_gen_container *a
case MCC_TAC_DIV_FLOAT:
asm_gen_binary_float_op(out, entry, asm_container);
break;
// push
case MCC_TAC_PARAM_BOOL:
case MCC_TAC_PARAM_INT:
case MCC_TAC_PARAM_FLOAT:
case MCC_TAC_PARAM_STRING:
asm_gen_param(out,entry,asm_container);
break;
case MCC_TAC_PARAM_BOOL_ARR:
case MCC_TAC_PARAM_INT_ARR:
case MCC_TAC_PARAM_FLOAT_ARR:
case MCC_TAC_PARAM_STRING_ARR:
asm_gen_param_array(out,entry, asm_container);
break;
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment