Advertisement
kernel_memory_dump

Untitled

Mar 9th, 2014
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.84 KB | None | 0 0
  1. // ovo ide u main
  2.  
  3. while ( !w.empty() ) {
  4. // W je kopija programa i program je kopija W
  5. // gotov si kada ceo W izbrises (pojedes) xd
  6.     StmList::iterator S;
  7.     S = w.front(); // S uvek od pocetka
  8.     if ( (*S)->u.kind == T_MOVE && (*S)->u.MOVE.src -> kind == T_CONST
  9.          && ((*S)->u.MOVE.dst) == T_TEMP) {
  10.  
  11. // radi i bez (* , moze i S->, al nekad ne radi, zavisi koji tip
  12.       // ti trazi metoda, operacija, cemu pristupas, jbg xd
  13. program.remove(S); // MOVE INSTRUKCIJE SE DELETUJU
  14. int reg = (S->u.move.dst ) -> u.TEMP;
  15.                 int con = (S->u.move.src) -> u.CONST;
  16.          for(iterProg=program.begin(); iterProg!=program.end();interProg++){
  17.   checkStm( S, reg, con, true, false);
  18.                  
  19.   }
  20.     }
  21.  
  22.     W.remove(S); // uspesno obradjena 1 instrukcija iz kopije, ide na sledecu ( prvu na pocetku)
  23. }
  24.  
  25. checkStm nista ne radis, on poziva checkExprss
  26.  
  27. E sad
  28. i ovo ti je dato, ti treba da (za B) samo izmenis deo gde je T_MOVE
  29.  
  30. checkExp( parametri) {
  31. switch ( exp->kind){
  32.  
  33. case T_MOVE:
  34.            if ( replaceTemp == true){
  35.                if( exp->u.MOVE.dst->u.TEMP == reg){
  36.                  exp->u.MOVE.dst->u.CONST=newConst;
  37.                  exp->u.MOVE.dst->kind=T_CONST;
  38.                 }
  39.    }
  40.  
  41. Dodatni:
  42.   case: BIN_OP
  43.          if ( exp->u.BINOP.left ->kind == T_CONST && exp->u.BINOP.right -> == T_CONST)
  44.             if( exp->u.BINOP.op == T_plus) {
  45. int zbir_dve_const= exp->u.BINOP.left-> u.CONST + exp->u.BINOP.right-> u.CONST;
  46.                 exp->u.CONST = zbir_dve_const;
  47.                 exp->kind = T_CONST; // vise nije BINOP izraz nego zbir 2 konstante , tj samo konstanta
  48.     }
  49.             else
  50. int razlika_dve_const= exp->u.BINOP.left-> u.CONST + exp->u.BINOP.right-> u.CONST;
  51.                 exp->u.CONST = razlika_dve_const;
  52.                 exp->kind = T_CONST;
  53.              }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement