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

fixed float constants

parent 67775bee
No related branches found
No related tags found
No related merge requests found
......@@ -73,18 +73,16 @@ void asm_gen_assignment_bool(FILE *out, struct mcc_tac_entry *te, struct mcc_asm
void asm_gen_assignment_string(FILE *out, struct mcc_tac_entry *te, struct mcc_asm_gen_container *asm_container) {
mcc_assembly_add_offset_variable(asm_container, te);
te->arg1[strlen(te->arg1) - 2] = '\0';
fprintf(out, "\t__LCD%d:\n", asm_container->labelCounter);
fprintf(out, "\t.LC%d:\n", asm_container->labelCounter);
fprintf(out, "\t .string \"%s\"\n", te->arg1 + 2);
fprintf(out, "\tmovl\t$.LC%d, %d(%%ebp)\n", asm_container->labelCounter++, mcc_assembly_get_current_offset(asm_container));
}
void asm_gen_assignment_float(FILE *out, struct mcc_tac_entry *te, struct mcc_asm_gen_container *asm_container) {
mcc_assembly_add_offset_variable(asm_container, te);
float literal = atof(te->arg1);
int *parts = (int *)&literal;
fprintf(out, "\t__LCD%d:\n", asm_container->labelCounter);
fprintf(out, "\t .long %d\n", parts[0]);
fprintf(out,"\tflds __LCD%d\n", asm_container->labelCounter++);
fprintf(out, "\t.LC%d:\n", asm_container->labelCounter);
fprintf(out, "\t .long %s\n", te->arg1);
fprintf(out,"\tflds .LC%d\n", asm_container->labelCounter++);
fprintf(out, "\tfstps %d(%%ebp)\n",mcc_assembly_get_current_offset(asm_container));
}
......
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