// // Created by chepycou on 4/14/23. // #include #include "table.h" /*prints the ASM instruction for the addition computation * and returns the address of the temporary variable*/ int operation_add(int addr1, int addr2){ int addr = addTempINTAndGetAddress(); printf("ADD @%d @%d @%d\n", addr, addr1, addr2); return addr; } /*prints the ASM instruction for the subtraction computation * and returns the address of the temporary variable*/ int operation_sub(int addr1, int addr2){ int addr = addTempINTAndGetAddress(); printf("SUB @%d @%d @%d\n", addr, addr1, addr2); return addr; } /*prints the ASM instruction for the multiplication computation * and returns the address of the temporary variable*/ int operation_mul(int addr1, int addr2){ int addr = addTempINTAndGetAddress(); printf("MUL @%d @%d @%d\n", addr, addr1, addr2); return addr; } /*prints the ASM instruction for the integer division computation * and returns the address of the temporary variable*/ int operation_divInt(int addr1, int addr2){ int addr = addTempINTAndGetAddress(); printf("DIV_INT @%d @%d @%d\n", addr, addr1, addr2); return addr; } /*prints the ASM instruction for the remainder computation * and returns the address of the temporary variable*/ int operation_divRem(int addr1, int addr2){ int addr = addTempINTAndGetAddress(); printf("DIV_REM @%d @%d @%d\n", addr, addr1, addr2); return addr; } /*prints the ASM instruction for the affection of a variable * EX : * a = 2; */ void operation_afc_nb(int addr, int value){ printf("AFC @%d #%d\n", addr, value); } /*prints the ASM instruction for the affection of a temporary variable * EX : * "1_TEMP = 2" * and returns the address of the temp variable*/ int operation_afc_nb_tmp(int value){ int addr = addTempINTAndGetAddress(); operation_afc_nb(addr, value); return addr; } /*prints the ASM instruction for the affection of a temporary variable * EX : * a = b; */ void operation_afc_addr(int addr1, int addr2){ printf("AFC @%d @%d\n", addr1, addr2); }