home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 221_01 / cc1.c < prev    next >
Text File  |  1979-12-31  |  4KB  |  131 lines

  1. /*
  2. HEADER:        Small-C compiler source part 1;
  3. TITLE:        Small-C Compiler for 6809 FLEX system;
  4. VERSION:    2.3;
  5.  
  6. DESCRIPTION:    "Small-C Compiler which produces 6809 assembler output."
  7. KEYWORDS:    ;
  8. SYSTEM:        6809 FLEX;
  9. FILENAME:    CC1.C;
  10. WARNINGS:    "Requires TSC relocatable assembler, library generater and
  11.                 linking loader."
  12.  
  13. SEE-ALSO:    ;
  14. AUTHORS:    Dieter H. Flunkert;
  15. COMPILERS:    VAX VMS C compiler;
  16. */
  17. /*
  18. **   small-c compiler version 2.3
  19. **
  20. **  history:
  21. **  13-jul-86  addet ! and ~ operator.  dhf
  22. **  13-jul-86  addet +=, -=, *= etc.    dhf
  23. **  18-jul-86  addet ?:, && and || operator. dhf
  24. **  22-jul-86  compare of pointers are correct now. dhf
  25. **  25-jul-86  made it a bit faster (changed & and | to && and ||) dhf
  26. **  27-jul-86  improved zero init of global variables. dhf
  27. **  29-oct-86  static declaration added. dhf
  28. */
  29. #include STDIO.H
  30. #ifdef VMS
  31. #include "CCDEF.C"
  32. #else
  33. #include CCDEF.C
  34. #endif
  35.  
  36. /*
  37. **  Type definitions
  38. */
  39. char _char[] = "char";
  40. char _int[] = "int";
  41. /* Now reserve some storage words  */
  42. char stattab[stattbsize]; /* static symbol table */
  43. char symtab[symtbsz]; /* symbol table */
  44. char *glbptr,*locptr,*statptr;  /* ptrs to next entries */
  45. char *endsearch;  /* compound start for searching locals */
  46. char *startcomp;  /* start of pointer in current compound */
  47. char swq[SWTABSZ];
  48. #ifdef CMD_LINE
  49. int argcs,*argvs[];   /* statig argc and argv */
  50. #endif
  51. int wq[wqtabsz];  /* while queue */
  52. int *wqptr;   /* ptr to next entry */
  53. char litq[litabsz];  /* literal pool */
  54. int litptr;   /* ptr to next entry */
  55. char macq[macqsize];  /* macro string buffer */
  56. int macptr;   /* and its index */
  57. int stdecl; /* greater 1 if static variable was declared */
  58. char stage[stagesize]; /* staging buffer */
  59. char *stagenext;  /* next adr in stage */
  60. char *stagelast;  /* last adr in stage */
  61. char line[linesize];  /* parsing buffer */
  62. char mline[linesize]; /* temp macro buffer */
  63. int lptr,mptr;  /* ptrs into each */
  64. /* Misc storage */
  65. int nxtlab,  /* next avail label # */
  66.  statlab,    /* next static label number */
  67.  stlab,      /* internal static label */
  68.  litlab,  /* label # assigned to literal pool */
  69.  constval[2], /* [0] = constant identifier */
  70.               /* [1] = constant value */
  71. #ifdef PHASE2
  72.  monitor,   /* monitor compile */
  73.  pause,   /* pause on error */
  74.  DEFDEBUG,  /* debug feature enabled */
  75. #endif
  76.  first_func, /* 1 first function else 0 */
  77.  declared, /* local symbol decl counter */
  78.  stkp,  /* compiler relative stk ptr */
  79.  argstk,  /* function arg sp */
  80. #ifdef STGOTO
  81.  nogo,  /* > 0 disables goto statements */
  82.  noloc, /* > 0 disables block locals */
  83. #endif
  84.  ncmp,  /* # open compound statements */
  85.  swactive, /* true inside a switch */
  86.  swdefault, /* default label # else 0 */
  87.  *swnext, /* address of next entry */
  88.  *swend, /* address of last table entry */
  89.  errcnt,  /* # errors in compilation */
  90.  eof,  /* set non-zero on final input eof */
  91.  input,  /* iob # for input file */
  92.  output,  /* iob # for output file (if any) */
  93.  input2,  /* iob # for "include" file */
  94.  iflevel, /* depth of #ifdef */
  95.  skiplevel, /* zero, if no skip */
  96. #ifdef OPTIMIZE
  97.  optimize, /* non-zero if user wants optimization */
  98. #endif
  99.  ctext,  /* non-zero to intermix c-source */
  100.  cmode,  /* non-zero while parsing c-code */
  101.    /* zero when passing assembly code */
  102.  lastst;  /* last executed statement type */
  103. char quote[2]; /* literal string for '"' */
  104. char *cptr,  /* work ptr to any char buffer */
  105.  *cptr2;
  106. int *iptr;  /* work ptr to any int buffer */
  107. /*
  108. **  external functions used
  109. */
  110. extern int addglb(), addloc(), addmac(), addstatic(), amatch(),
  111.   blanks(), cnl(), ch(), constexpr(),
  112.   defstorage(), doasm(), dumpzero(),
  113.   entry(), endst(), errrpt(), declexternal(),
  114.   findglb(), findloc(),
  115.   getint(), getlabel(),
  116.   header(), illname(),
  117.   kill(),
  118.   match(), multidef(),
  119.   needbrack(),needsub(), newfunc(), nl(), number(), ns(),
  120.   outbyte(), outdec(), outstr(),
  121.   pl(), point(), printlab(),
  122.   qstr(),
  123.   sout(), stowlit(), symname(),
  124.   trailer(),
  125.   upper();
  126. #ifdef VMS
  127. #include "cc11.c"
  128. #else
  129. #include cc11.c
  130. #endif
  131.