Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case T_MEM:
- {
- // Here goes the code for lw instruction, 'bem ti zeno majku boz'ju
- if(e->u.MEM->kind == T_BINOP){
- if(e->u.MEM->u.BINOP.op == T_plus){
- if(e->u.MEM->u.BINOP.left->kind == T_CONST && e->u.MEM->u.BINOP.right->kind == T_TEMP)
- (
- T_exp myExpression = e->u.MEM->u.BINOP.right;
- T_exp myConst = e->u.MEM->u.BINOP.left;
- Reg reg = getNewReg();
- char *buffer = (char *)malloc(__BUFFER_SIZE__ * sizeof(char));
- sprintf_s(buffer, __BUFFER_SIZE__, "lw 'd,%d('s)", myConst->u.CONST);
- AS_instr instr = AS_Oper(buffer, NULL, NULL, NULL)};
- emit(instr);
- )
- else if(e->u.MEM->u.BINOP.left->kind == T_TEMP && e->u.MEM->u.BINOP.right->kind == T_CONST)
- {
- T_exp myExpression = e->u.MEM->u.BINOP.left;
- T_exp myConst = e->u.MEM->u.BINOP.right;
- Reg reg = getNewReg();
- char *buffer = (char*)malloc(__BUFFER_SIZE__*sizeof(char));
- sprintf_s(buffer, __BUFFER_SIZE__, "lw 'd,%d('s)", myConst->u.CONST);
- AS_instr instr = AS_Oper(buffer, NULL, NULL, NULL)};
- emit(instr);
- else if(e->u.MEM->u.BINOP.left->kind == T_CONST && e->u.MEM->u.BINOP.right->kind == T_CONST)
- {
- T_exp myConst1 = e->u.MEM->u.BINOP.left;
- T_exp myConst2 = e->u.MEM->u.BINOP.right;
- Reg reg = getNewReg();
- char *buffer = (char *)malloc(__BUFFER_SIZE__*sizeof(char));
- sprintf_s(buffer, __BUFFER_SIZE__, "lw 'd,%d('s)", myConst->u.CONST);
- AS_instr instr = AS_Oper(buffer, NULL, NULL, NULL)};
- emit(instr);
- else
- assert(0);
- }
- break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement