cgframe_ppc.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef CGFRAME_PPC_H
  2. #define CGFRAME_PPC_H
  3. #include "cgframe.h"
  4. struct CGModule_PPC;
  5. struct CGFrame_PPC : public CGFrame{
  6. CGModule_PPC *mod_ppc;
  7. int param_sz,local_sz,tmp_disp8,bigFun;
  8. CGReg* R[32];
  9. CGReg* F[32];
  10. enum{
  11. EA_SIMM=1,
  12. EA_UIMM=2,
  13. EA_SHIFTED=4
  14. };
  15. enum{
  16. XOP_LWARX,
  17. XOP_STWCX
  18. };
  19. CGMem* genMem( CGMem *exp,char *buf );
  20. CGReg* genExp( CGExp *exp );
  21. CGReg* genLea( CGLea *exp );
  22. CGReg* genCvt( CGCvt *exp );
  23. CGReg* genUop( CGUop *exp );
  24. CGReg* genBop( CGBop *exp );
  25. CGReg* genScc( CGScc *exp );
  26. CGReg* genJsr( CGJsr *exp );
  27. CGReg* genLit( CGLit *exp );
  28. CGReg* genSym( CGSym *exp );
  29. CGReg* genFrm( CGFrm *exp );
  30. CGExp* genExp( CGExp *exp,char *buf,int &ea_mask );
  31. CGReg* genLoad( CGMem *mem );
  32. void genStore( CGMem *mem,CGExp *exp );
  33. void genCopy( CGReg *dst,CGReg *src );
  34. void genMov( CGExp *lhs,CGExp *rhs );
  35. void genBcc( int cc,CGExp *lhs,CGExp *rhs,CGSym *sym );
  36. void genRet( CGExp *exp );
  37. CGFrame_PPC( CGFun *fun,CGModule_PPC *mod );
  38. virtual string fixSym( string id );
  39. virtual void genFun();
  40. virtual void genStm( CGStm *stm );
  41. virtual CGMem* allocLocal( int type );
  42. virtual CGExp* allocSpill( CGReg *r );
  43. virtual void finish();
  44. };
  45. #endif