Advertisement
Lauda

Untitled

May 23rd, 2013
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.34 KB | None | 0 0
  1. case T_MEM:
  2.                     {
  3.                             // Here goes the code for lw instruction, 'bem ti zeno majku boz'ju
  4.                             if(e->u.MEM->kind == T_BINOP){
  5.                                     if(e->u.MEM->u.BINOP.op == T_plus){
  6.                                             if(e->u.MEM->u.BINOP.left->kind == T_CONST && e->u.MEM->u.BINOP.right->kind == T_TEMP)
  7.                                             (
  8.                                                     T_exp myExpression = e->u.MEM->u.BINOP.right;
  9.                                                     T_exp myConst = e->u.MEM->u.BINOP.left;
  10.                                                     Reg reg = getNewReg();
  11.                                                    
  12.                                                     char *buffer = (char *)malloc(__BUFFER_SIZE__ * sizeof(char));
  13.                                                     sprintf_s(buffer, __BUFFER_SIZE__, "lw 'd,%d('s)", myConst->u.CONST);
  14.                                                    
  15.                                                     AS_instr instr = AS_Oper(buffer, NULL, NULL, NULL)};
  16.                                                     emit(instr);
  17.                                                     )
  18.                                             else if(e->u.MEM->u.BINOP.left->kind == T_TEMP && e->u.MEM->u.BINOP.right->kind == T_CONST)
  19.                                             {
  20.                                                             T_exp myExpression = e->u.MEM->u.BINOP.left;
  21.                                                             T_exp myConst = e->u.MEM->u.BINOP.right;
  22.                                                             Reg reg = getNewReg();
  23.                                                            
  24.                                                             char *buffer = (char*)malloc(__BUFFER_SIZE__*sizeof(char));
  25.                                                             sprintf_s(buffer, __BUFFER_SIZE__, "lw 'd,%d('s)", myConst->u.CONST);
  26.      
  27.                                                             AS_instr instr = AS_Oper(buffer, NULL, NULL, NULL)};
  28.                                                             emit(instr);
  29.                                             else if(e->u.MEM->u.BINOP.left->kind == T_CONST && e->u.MEM->u.BINOP.right->kind == T_CONST)
  30.                                             {
  31.                                                             T_exp myConst1 = e->u.MEM->u.BINOP.left;
  32.                                                             T_exp myConst2 = e->u.MEM->u.BINOP.right;
  33.                                                             Reg reg = getNewReg();
  34.                                                            
  35.                                                             char *buffer = (char *)malloc(__BUFFER_SIZE__*sizeof(char));
  36.                                                             sprintf_s(buffer, __BUFFER_SIZE__, "lw 'd,%d('s)", myConst->u.CONST);
  37.      
  38.                                                             AS_instr instr = AS_Oper(buffer, NULL, NULL, NULL)};
  39.                                                             emit(instr);
  40.                                             else
  41.                                                     assert(0);
  42.                     }
  43.                     break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement