push_pop.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. push_pop.h
  3. */
  4. #ifndef PUSH_POP_H
  5. #define PUSH_POP_H
  6. #include "back.h"
  7. #define NR_REGS 64
  8. typedef char *reg_t;
  9. typedef struct cache_elt {
  10. reg_t reg, reg2;
  11. char *ext;
  12. arith cst;
  13. } cache_elt;
  14. #define T_cst 1
  15. #define T_ext 2
  16. #define T_reg 4
  17. #define T_float 8
  18. #define T_reg2 16
  19. #define T_float2 32
  20. typedef char const_str_t[NR_REGS];
  21. extern reg_t reg_g0, reg_g1, reg_g2, reg_g3, reg_g4, reg_g5, reg_g6, reg_g7;
  22. extern reg_t reg_i0, reg_i1, reg_i2, reg_i3, reg_i4, reg_i5, reg_i6, reg_i7;
  23. extern reg_t reg_l0, reg_l1, reg_l2, reg_l3, reg_l4, reg_l5, reg_l6, reg_l7;
  24. extern reg_t reg_o0, reg_o1, reg_o2, reg_o3, reg_o4, reg_o5, reg_o6, reg_o7;
  25. extern reg_t reg_f0;
  26. extern reg_t reg_sp, reg_lb, reg_gap;
  27. extern reg_t reg_tmp;
  28. #include "ansi.h"
  29. _PROTOTYPE(int const13, (int));
  30. _PROTOTYPE(void init_cache, (void));
  31. _PROTOTYPE(void free_reg, (reg_t));
  32. _PROTOTYPE(void free_double, (reg_t)); /* ..._reg */
  33. _PROTOTYPE(void forced_alloc_reg, (reg_t));
  34. _PROTOTYPE(void soft_alloc_reg, (reg_t));
  35. _PROTOTYPE(void change_reg, (reg_t));
  36. _PROTOTYPE(int type_of_tos, (void));
  37. _PROTOTYPE(void inc_tos, (arith));
  38. _PROTOTYPE(void inc_tos_reg, (reg_t));
  39. _PROTOTYPE(void push_const, (arith));
  40. _PROTOTYPE(void push_reg, (reg_t));
  41. _PROTOTYPE(void push_ext, (char *));
  42. _PROTOTYPE(void flush_cache, (void));
  43. _PROTOTYPE(void cache_need, (int));
  44. _PROTOTYPE(void pop_nop, (int));
  45. _PROTOTYPE(reg_t alloc_reg, (void));
  46. _PROTOTYPE(reg_t alloc_reg_var, (void));
  47. _PROTOTYPE(reg_t alloc_float, (void));
  48. _PROTOTYPE(reg_t alloc_float_var, (void));
  49. _PROTOTYPE(reg_t alloc_double, (reg_t *sub_reg));
  50. _PROTOTYPE(reg_t alloc_double_var, (reg_t *sub_reg));
  51. _PROTOTYPE(reg_t pop_reg, (void));
  52. _PROTOTYPE(reg_t pop_reg_c13, (char*));
  53. _PROTOTYPE(reg_t pop_reg_reg, (reg_t*));
  54. _PROTOTYPE(reg_t pop_float, (void));
  55. _PROTOTYPE(reg_t pop_double, (reg_t *sub_reg));
  56. _PROTOTYPE(void pop_reg_as, (reg_t r));
  57. _PROTOTYPE(arith pop_const, (char *n_str));
  58. _PROTOTYPE(arith top_const, (void));
  59. _PROTOTYPE(void dup_tos, (int n));
  60. _PROTOTYPE(void exg_top, (int n));
  61. #define code_combiner(x) x
  62. #endif /* PUSH_POP_H */