int main(int argc, char* argv[]) { if (argc != 3) { help(); return 1; } char* src = NULL; ssize_t srclen = load_file(argv[2], &src); if (srclen < 0) { return 2; } struct code_list* code_list = make_code_list(src, srclen); if (code_list == NULL) { return 3; } bool status = write_elf(argv[1], code_list); munmap(src, srclen); free_code_list(code_list); if (status == false) { return 4; } return 0; }
int main(int argc, char **argv) { InterCodeList *list1 = make_code_list(gen_func_code("main")); list1 = link_inter_code(2, list1, make_code_list(gen_command_code(Read, new_var_op(1)))); list1 = link_inter_code(2, list1, make_code_list(gen_assign_code(new_var_op(0), new_var_op(1)))); list1 = link_inter_code(2, list1, make_code_list(gen_assign_code(new_var_op(2), new_const_op(0)))); InterCodeList *list2 = link_inter_code(4, make_code_list(gen_binop_code(More, new_lbl_op(1), new_var_op(0), new_var_op(2))), make_code_list(gen_binop_code(Less, new_lbl_op(2), new_var_op(0), new_var_op(2))), make_code_list(gen_command_code(Write, new_var_op(2))), make_code_list(gen_command_code(Goto, new_lbl_op(3)))); InterCodeList *list3 = link_inter_code(9, make_code_list(gen_label_code(new_lbl_op(1))), make_code_list(gen_assign_code(new_var_op(3), new_const_op(1))), make_code_list(gen_command_code(Write, new_var_op(3))), make_code_list(gen_command_code(Goto, new_lbl_op(3))), make_code_list(gen_label_code(new_lbl_op(2))), make_code_list(gen_assign_code(new_var_op(6), new_const_op(-1))), make_code_list(gen_command_code(Write, new_var_op(6))), make_code_list(gen_label_code(new_lbl_op(3))), make_code_list(gen_command_code(Return, new_var_op(2)))); print_inter_code(fopen(argv[1], "w+"), link_inter_code(3, list1, list2, list3)); return 0; }