codegen_x86.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "../codegen.h"
  2. struct Tile;
  3. class Codegen_x86 : public Codegen{
  4. public:
  5. Codegen_x86( ostream &out,bool debug );
  6. virtual void enter( const string &l,int frameSize );
  7. virtual void code( TNode *code );
  8. virtual void leave( TNode *cleanup,int pop_sz );
  9. virtual void label( const string &l );
  10. virtual void i_data( int i,const string &l );
  11. virtual void s_data( const string &s,const string &l );
  12. virtual void p_data( const string &p,const string &l );
  13. virtual void align_data( int n );
  14. virtual void flush();
  15. private:
  16. bool inCode;
  17. Tile *genCompare( TNode *t,string &func,bool negate );
  18. Tile *munch( TNode *t ); //munch and discard result
  19. Tile *munchReg( TNode *t ); //munch and put result in a CPU reg
  20. Tile *munchFP( TNode *t ); //munch and put result on FP stack
  21. Tile *munchCall( TNode *t );
  22. Tile *munchUnary( TNode *t );
  23. Tile *munchLogical( TNode *t );
  24. Tile *munchArith( TNode *t );
  25. Tile *munchShift( TNode *t );
  26. Tile *munchRelop( TNode *t );
  27. Tile *munchFPUnary( TNode *t );
  28. Tile *munchFPArith( TNode *t );
  29. Tile *munchFPRelop( TNode *t );
  30. };