disassem.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /****************************************************************************
  2. * dcc project disassembler header
  3. * (C) Mike van Emmerik
  4. ****************************************************************************/
  5. #pragma once
  6. #include <sstream>
  7. #include <fstream>
  8. #include <vector>
  9. #include "bundle.h"
  10. struct LLInst;
  11. struct Disassembler
  12. {
  13. protected:
  14. int pass;
  15. int g_lab;
  16. //bundle &cCode;
  17. std::ofstream m_fp;
  18. std::vector<std::string> m_decls;
  19. std::vector<std::string> m_code;
  20. public:
  21. Disassembler(int _p) : pass(_p)
  22. {
  23. g_lab=0;
  24. }
  25. public:
  26. void disassem(Function *ppProc);
  27. void disassem(Function *ppProc, int i);
  28. void dis1Line(LLInst &inst, int loc_ip, int pass);
  29. };
  30. /* Definitions for extended keys (first key is zero) */
  31. #define EXT 0x100 /* "Extended" flag */
  32. #ifdef __MSDOS__
  33. #define KEY_DOWN EXT+'P'
  34. #define KEY_LEFT EXT+'K'
  35. #define KEY_UP EXT+'H'
  36. #define KEY_RIGHT EXT+'M'
  37. #define KEY_NPAGE EXT+'Q'
  38. #define KEY_PPAGE EXT+'I'
  39. #endif
  40. #ifdef _CONSOLE
  41. #define KEY_DOWN 0x50 /* Same as keypad scancodes */
  42. #define KEY_LEFT 0x4B
  43. #define KEY_UP 0x48
  44. #define KEY_RIGHT 0x4D
  45. #define KEY_NPAGE 0x51
  46. #define KEY_PPAGE 0x49
  47. #endif
  48. #ifdef __UNIX__
  49. #define KEY_DOWN EXT+'B'
  50. #define KEY_LEFT EXT+'D'
  51. #define KEY_UP EXT+'A'
  52. #define KEY_RIGHT EXT+'C'
  53. #define KEY_NPAGE EXT+'J' /* Enter correct value! */
  54. #define KEY_PPAGE EXT+'K' /* Another guess! */
  55. #endif
  56. /* "Attributes" */
  57. #define A_NORMAL 'N' /* For Dos/Unix */
  58. #define A_REVERSE 'I'
  59. #define A_BOLD 'B'
  60. #define LINES 24
  61. #define COLS 80