linker.h 779 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef LINKER_H
  2. #define LINKER_H
  3. class Module{
  4. public:
  5. virtual ~Module(){}
  6. virtual void *link( Module *libs )=0;
  7. virtual bool createExe( const char *exe_file,const char *dll_file )=0;
  8. virtual int getPC()=0;
  9. virtual void emit( int byte )=0;
  10. virtual void emitw( int word )=0;
  11. virtual void emitd( int dword )=0;
  12. virtual void emitx( void *data,int sz )=0;
  13. virtual bool addSymbol( const char *sym,int pc )=0;
  14. virtual bool addReloc( const char *dest_sym,int pc,bool pcrel )=0;
  15. virtual bool findSymbol( const char *sym,int *pc )=0;
  16. };
  17. class Linker{
  18. public:
  19. virtual int version();
  20. virtual bool canCreateExe();
  21. virtual Module *createModule();
  22. virtual void deleteModule( Module *mod );
  23. };
  24. extern "C" _declspec(dllexport) Linker * _cdecl linkerGetLinker();
  25. #endif