Skip to content
Snippets Groups Projects
Commit 97d05adc authored by Clemens Paumgarten's avatar Clemens Paumgarten
Browse files

Some return stuff

parent 95eb2092
No related branches found
No related tags found
No related merge requests found
......@@ -10,9 +10,15 @@ struct mcc_assembly_offset {
int offset;
};
struct mcc_assembly_assignment_map_entry {
char *temp;
char *temp_value;
};
struct mcc_asm_gen_container {
Dynamic_Array *variable_offsets;
int labelCounter;
Dynamic_Array *assignment_map;
};
/*enum mcc_asm_contant_type {MCC_ASM_CONST_FLOAT, MCC_ASM_CONST_STRING};
......@@ -32,6 +38,9 @@ int mcc_asm_gen_creator(FILE *out, struct mcc_tac *tac, struct mcc_symbol_table
void mcc_invoke_gcc(char *file_name, char *output);
void mcc_assembly_add_to_assignment_map(char *temp, struct mcc_asm_gen_container *ac, struct mcc_tac_entry *te, struct mcc_tac *tac);
// void mcc_asm_print_constant(FILE *out, struct mcc_asm_constant *constant);
#endif //MCC_ASSEMBLY_GEN_H
#include "stdlib.h"
#include <stdlib.h>
#include <string.h>
#include <mcc/assembly_gen.h>
#include <mcc/tac.h>
#include "mcc/assembly_gen.h"
#include "mcc/tac.h"
int mcc_assembly_get_current_offset(struct mcc_asm_gen_container *ac) {
Dynamic_Array *offsets = ac -> variable_offsets;
......@@ -35,4 +36,23 @@ void mcc_assembly_add_offset_variable(struct mcc_asm_gen_container *ac, struct m
// }
mcc_add_to_array(ac -> variable_offsets, next_entry);
}
void mcc_assembly_add_to_assignment_map(char *temp, struct mcc_asm_gen_container *ac, struct mcc_tac_entry *te, struct mcc_tac *tac) {
char* var_name = te -> arg1;
for (int i = 0; i < tac -> tac_entries -> size; i++) {
struct mcc_tac_entry *entry = tac -> tac_entries -> arr[i];
if (strcmp(entry -> result, var_name) == 0) {
// add to map
struct mcc_assembly_assignment_map_entry *asm_map_entry = malloc(sizeof(*asm_map_entry));
asm_map_entry -> temp = temp;
asm_map_entry -> temp_value = entry -> result;
mcc_add_to_array(ac -> assignment_map, asm_map_entry);
break;
}
}
}
\ No newline at end of file
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include "mcc/tac.h"
#include "mcc/tac_print.h"
......@@ -249,7 +249,6 @@ void asm_gen_param_pop(FILE *out, struct mcc_tac_entry *te, struct mcc_asm_gen_c
void asm_gen_param_pop_array(FILE *out, struct mcc_tac_entry *te, struct mcc_asm_gen_container *asm_container)
{
// increase parameter offset
mcc_assembly_add_offset_variable(asm_container, te);
}
......
int main() {
int a;
int b;
a = 1000;
b = 1000;
return a;
}
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