home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / src / Config.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-13  |  3.3 KB  |  130 lines

  1. typedef struct {
  2.     unsigned char max_unaligned_load;
  3.     void (*blkfetch) ARGS((int size, int off, int reg, int tmp));
  4.     void (*blkstore) ARGS((int size, int off, int reg, int tmp));
  5.     void (*blkloop)  ARGS((int dreg, int doff,
  6.                            int sreg, int soff,
  7.                            int size, int tmps[]));
  8. void (*_label) ARGS((Node));
  9. int (*_rule) ARGS((void*, int));
  10. short **_nts;
  11. void (*_kids) ARGS((Node, int, Node*));
  12. char **_opname;
  13. char *_arity;
  14. char **_string;
  15. char **_templates;
  16. char *_isinstruction;
  17. char **_ntname;
  18.     void (*emit2) ARGS((Node));
  19.     void (*doarg) ARGS((Node));
  20.     void (*target) ARGS((Node));
  21.     void (*clobber) ARGS((Node));
  22. } Xinterface;
  23. extern int     askregvar  ARGS((Symbol, Symbol));
  24. extern void    blkcopy    ARGS((int, int, int,
  25.                                 int, int, int[]));
  26. extern int     getregnum  ARGS((Node));
  27. extern int     mayrecalc  ARGS((Node));
  28. extern int     mkactual   ARGS((int, int));
  29. extern void    mkauto     ARGS((Symbol));
  30. extern Symbol  mkreg      ARGS((char *, int, int, int));
  31. extern Symbol  mkwildcard ARGS((Symbol *));
  32. extern int     move       ARGS((Node));
  33. extern int     notarget   ARGS((Node));
  34. extern void    parseflags ARGS((int, char **));
  35. extern int     range      ARGS((Node, int, int));
  36. extern unsigned regloc    ARGS((Symbol));  /* omit */
  37. extern void    rtarget    ARGS((Node, int, Symbol));
  38. extern void    setreg     ARGS((Node, Symbol));
  39. extern void    spill      ARGS((unsigned, int, Node));
  40.  
  41. extern int      argoffset, maxargoffset;
  42. extern int      bflag, dflag;
  43. extern int      dalign, salign;
  44. extern int      framesize;
  45. extern unsigned freemask[], usedmask[];
  46. extern int      offset, maxoffset;
  47. extern Symbol   rmap[];
  48. extern int      swap;
  49. extern unsigned tmask[], vmask[];
  50. typedef struct {
  51.     void *state;
  52.     short inst;
  53.     Node kids[3];
  54.     Node prev, next;
  55.     Node prevuse;
  56.     short argno;
  57.     short Flags;
  58.     short rulenum;
  59.     short nts;
  60.     Node *IntrinsicArgs;
  61.     unsigned listed:1;
  62.     unsigned registered:1;
  63.     unsigned emitted:1;
  64.     unsigned copy:1;
  65.     unsigned equatable:1;
  66.     unsigned spills:1;
  67.     unsigned mayrecalc:1;
  68.     unsigned analyzed:1;
  69.     unsigned unsafe:1;
  70.     unsigned postincr:1;
  71.     unsigned fieldaccess:1;
  72.     unsigned dangerousChildren:1;
  73.     unsigned nestedCall:1;
  74.     int intrinsic;
  75.     int intrinsicArg;
  76. } Xnode;
  77. typedef struct {
  78.     Symbol vbl;
  79.     short set;
  80.     short number;
  81.     unsigned mask;
  82. } *Regnode;
  83. enum { IREG=0, FREG=1 };
  84. typedef struct {
  85.     char *name;
  86. /*    unsigned int eaddr;   omit */
  87.     unsigned int callused;
  88.     int offset;
  89.     Node lastuse;
  90.     int usecount;
  91.     Regnode regnode;
  92.     Symbol *wildcard;
  93.     short PrologueEnd;
  94.     Symbol ArraySymbol;
  95.     int intrinsic;
  96.     unsigned switchSymbol:1;
  97.     unsigned aliased:1;
  98.     unsigned isArgument;
  99. } Xsymbol;
  100. enum { RX=2 };
  101. typedef struct {
  102.     int offset;
  103.     unsigned freemask[2];
  104. } Env;
  105.  
  106. #define LBURG_MAX SHRT_MAX
  107.  
  108. enum { VREG=(38<<4) };
  109.  
  110. /* Exported for the front end */
  111. extern void             blockbeg        ARGS((Env *));
  112. extern void             blockend        ARGS((Env *));
  113. extern void             emit            ARGS((Node));
  114. extern Node             gen             ARGS((Node));
  115.  
  116. extern unsigned         emitbin         ARGS((Node, int));
  117.  
  118. extern int hasExceptions;
  119. int FinishTryBlock(void);
  120. int doExcept(void);
  121. int doTry(void);
  122.  
  123.  
  124.  
  125. #if 0
  126. #define debug(x) 0
  127. #else
  128. #define debug(x) (dflag&&((x),0))
  129. #endif
  130.