⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kcchst.h

📁 KCC , a good c compiler, write by Ken Harrenstien
💻 H
📖 第 1 页 / 共 2 页
字号:
 *	  assignment operator instead of the equality operator seen
 *	  as the root operator of a control expression in an, if-stmt,
 *	  while-stmt, for-stmt, do-while-stmt, etc. (PPS #4293)
 *	  Modules: CC, CCOPT, CCSTMT
 *
 * 2A(30) KAR,TEA, January 1992
 *	  Changed compiler to place a /RUN switch in the LINK command
 *	  file which will run MAKSHR on the generated executable so
 *	  the .EXE will not have any initialized low-seg memory unless
 *	  any of the debugging (-g) switches have been specified.
 *	  Also added a facility that will generate code to check if
 *	  a dereferenced pointer is NULL.  If so, a message will be
 *	  sent to the users screen informing them of the NULL pointer.
 *	  This will be available by specifiying -g=nullptr on the KCC
 *	  command line,
 *	  Tim implemented the #pragma module(ID) facility (PPS 4329).
 *	  Modules: CC, CCASMB, CCGEN2, CCCODE, CCSTMT, CCOUT, CCNODE.H,
 *	  CCCODE.H, CCPP, CC.H
 *
 * 2A(31) KAR, TEA, January 1992
 *	  Eliminated *.PRE files.
 *	  Kevin added /o switch to makshr command.
 *	  Modules: CC, CCOUT, CCASMB, CC.H
 *
 * 2A(32) KAR, January, February 1992
 *	  In-line monitor calls using channel numbers can now use
 *	  channel numbers greater than 5 (SPR 9738).
 *	  Also changed makprefile() to output the ENTRY point list into
 *	  the .MAC file just before the END or PRGEND statements so 
 *	  indexed libraries can become a reality once again.  This was
 *	  the chosen solution over reactivating the .PRE files because
 *	  bringing back the .PRE files would not work for #pragma module
 *	  usage.
 *	  Modules: CCOUT
 *
 * 2A(33) KAR,TEA February 1992
 *	  TEA fixed KCCDBG (CC.H, CCSYM.H, CCDATA, CCSYM) and removed
 *	  BC++ error in CCASMB.
 *	  KAR added -K switch to signal the user wishes to make use of the
 *	  new strictly ANSI library, LIBCA.
 *	  Modules: CC, CCASMB, CCDATA, CCOUT, CCSYM, CC.H, CCSYM.H
 *
 * 2A(34) KAR,TEA  May 7 1992
 *	  KAR fixed the order in which the header files are searched
 *	  when the -K switch is used.  Also implemented PPS 4296, which
 *	  calls for a method to specify the name of the .REL file
 *	  produced, which implies the name of the .MAC file.  This was
 *	  done by providing the -R=<filename>.REL switch.  Also changed
 *	  the switch on the MAKSHR command line to /d(elete) from 
 *	  /o(verwrite) to delete the .MKS file rather than just
 *	  overwrite it.  Also removed dependency on LIBC and its non-ANSI
 *	  routines by using ANSI I/O and an internal macro for getting the
 *	  job number.  Lastly, I changed the version number facility used 
 * 	  by KCC so that it wouldn't need Get_Version() from LIBC.
 *
 *	  TEA fixed DEBUG_KCC=1 in CCDATA and CCSYM. Closed SPR 9774
 *	  in CCCSE by avoiding an invalid optimization that folds identical
 *	  mod and div expressions, overwriting the mod register. Closed SPR
 *	  9807 by fixing 18 heap calls in 7 files that did not test for NULL.
 *	  Rewrote stat() and fstat() so KCC can be built with just LIBCA.
 *	  Rewrote -q to avoid recompiling regardless of ".C" suffix.
 *	  Closed SPR 9813 about sizeof(s) where s is array of short/ushort.
 *	  Modules: CC, CCASMB, CCCODE, CCDATA, CCERR, CCLEX, CCPP,
 * 	  CCSTMT, CCSYM, KCCHST.H
 *
 * 2A(35) KAR,TEA May 27, 1992
 *	  TEA changed the help screen to include the new -R switch.
 *	  KAR fixed the problems with the replacement for stat() in the
 *	  compiler.  I had to fix a problem it had with finding the
 *	  symbol files.  It involved assigning an undefined value to the
 *	  PPN field in the arg-block for the FILOP.  Then I realized 
 *	  why the -q switch wouldn't work on occasion.  There was no
 *	  facility that parsed a PPN when given as part of a filename
 *	  to the new stats() function.  I added a function that would
 *	  parse a PPN if one was given and fixed fnparse() to handle 
 *	  device names of 6 characters thus fixing the -q switch.
 *	  Modules: CC, CCASMB
 *
 * 2A(36) KAR June 1992
 *	  Closed SPR 9833 that caused the #pragma include_once to span
 *	  across source files if more than one was placed on the command
 *	  line.
 *	  Closed SPR 9862 which generated bad pointer values for constant
 *	  pointers to typedef'ed structs.  The fix was put into elembsize(),
 *	  it checks if it is looking at a struct and passes back word size
 *	  instead of 0 which translates to a void * and causes the pointer
 *	  to be generated as a 9-bit byte pointer.
 *	  Modules: CC, CCSYM, CCSYM.H
 *
 * 2A(37) KAR, FEW, July 1992
 *	  KAR closed SPR 9879 that caused any error in any of the files in
 *	  a list of files given to KCC to not run MACRO even on the files
 *	  that had no errors.  Now it will run MACRO, but not LINK if
 *	  there are any files that did not have errors.
 *	  Modules: CC
 *	  FEW closed SPR 9577 (source filespec prefix and suffix, if any,
 *	  were being forced onto "" #include filespecs).
 *	  Module: CCPP
 *	  FEW closed SPR 9877.  Function ccopt:foldboth () transformed
 *	  code sequence <MOV R,S><OP R,x> into <OP S,x><MOV R,S>.  This
 *	  transformation is invalid in the case where "x" refers to "R".
 *	  Module: CCOPT
 *	  FEW closed SPR 9574.  Function ccjskp:optlab () failed to detect
 *	  the invalidation of one optimization by a JUMP or JRST out of the
 *	  peephole buffer.
 *	  Module: CCJSKP
 *	  FEW added a LINK command to /SEARCH KCCDBG.REL.
 *	  Module: CCASMB
 *
 * 2A(40) FEW, July 1992
 *	  KAR, August 1992
 *	  FEW closed SPR 9835.  The VREG struct was trying to keep the stack
 *	  offset of a spilled object in a char.  This meant that any
 *	  function with more than 512 words of locals would get bad code
 *	  when any spilled object was reloaded.
 *	  Module: CCREG.H
 *	  FEW closed SPR 9747.  The code that checked for arithmetic overflow
 *	  always as only checked for signed overflow, which caused it to
 *	  falsely report overflow on some unsigned operations.  Code was
 *	  added to handle unsigned addition and subtraction by checking
 *	  the processor CARRY0 flag.
 *	  Module: CCEVAL
 *	  FEW closed SPR 9734.  Type qualifiers, applied to declared instances
 *	  of typedef'ed arrays, were being wrongly applied to the type
 *	  itself.
 *	  Module: CCDECL
 *	  KAR closed PPS 4551.  Added built-in macro in KCC for DOS,
 *	  __KCCDOS__ so that host specifics in header files can be jacketed
 *	  like in the new <csisym.h> for syntax checking on DOS
 *	  And closed PPS 4543.  Removed the note class message of unknown
 *	  #pragma.
 *	  Modules: CCPP, CSISYM.H, UUOSYM.H
 *	  KAR had to add an #undef and #define of sixbit around the #include
 *	  of csimon.h because of the STUPID typedef of char6 to sixbit in
 *	  comdef.h!  Something needs to be done about this.
 *	  Modules: CCASMB
 *
 * 2A(41) KAR August 1992
 *	  Implemented PPS 4516 which called for support of leveled header
 *	  files.
 *	  Modules: CC CCPARM.H
 *	  Also implemented PPS 4544 which asks for a warning (advisory)
 *	  when an auto variable is given a value but not used.
 *    NB. This was not completed in this release.
 *	  Modules: CCLEX CCSYM CCSYM.H
 *    FEW resolved SPR 9925.  Code in CCREG.C to manipulate double-word
 *	  virtual registers was not prepared to handle cases where the
 *	  given register was the second half of a double.
 *	  Module: CCREG
 *    FEW resolved SPR 9919.  Code that cast word pointers to
 *	  byte pointers formerly used TLO, which assumed left half
 *	  empty; substituted HRLI for TLO.
 *	  Modules: CCOUT CCCODE.H
 *    FEW changed the interface to KCCDBG so that the address of
 *	  its LUUO handler is set in the .MAC file.  This makes KCCDBG
 *	  independent of SIX36 () and thus useable in the absence of a
 *	  C main () function.
 *        Module: CCOUT
 *    FEW resolved SPR 9977.  In the absence of any global symbols,
 *	  the label indicating the end of the local symbol table (in a
 *        module compiled with -g=debug) was not being emitted.
 *        Module: CCSYM
 *
 * 2A(42) FEW December 1992
 *	- in CCPARM.H, increased THASHSIZE and MAXTYPE from 1279 to 2557
 *	    to accomodate Tools Development Group (no SPR).
 *	- in CCASMB.C, changed the forced LINK switches for KCCDBG.REL
 *	    versions 2(2) and later (overlooked in 2A(41), no SPR).
 *	- resolved SPR 9986.  The "-d" option, given alone, is now
 *	    tantamount to "-d=all".  Module CC.C.
 * 	- implemented PPS 4575, function-level-only debugging.  This
 * 	    involved a new keyword for the -g switch.  Modules:
 * 	    CC.H, CC.C, CCDBUG.C, CCSTMT.C, CCOUT.C, CCASMB.C, CCSYM.C,
 * 	    CCPP.C, CCDECL.C, CCGEN2.C
 *
 * 2A(43) KAR February 1993
 *	- Implemented PPS 4574 calling for C++ comments in KCC.
 *	Modules: CCPP.C
 *
 * 	FEW, March 1993
 * 	- resolved SPR 9943 ("scope mismatch" error after function-
 * 	    pointer declaration).  Module CCDECL.C.
 * 	- resolved SPR 0041 (faulty optimization that ignored a transfer
 *	    of control occurring between two instructions being folded).
 * 	    Module CCCODE.C.
 *
 * 2A(44) FW March 1993
 *      - Experimental version identical to 2A(43) except using more
 *        registers internally.  Not merged with production sources.
 *
 * 2A(45) FW July 1993
 *      - added "-P=nocpp" option and global variable "clevnocpp"
 *        to defeat C++ "//" comments.  Default is to permit them.
 *        Files affected: CC.C, CCPP.C, CCDATA.C, CC.H
 *
 * 2A(46) FW August 1993
 *	- "-P=nocpp" wasn't right the first time; patches in lots of
 *	  different places were needed.
 *	  Files affected: CCPP.C
 *
 * 2A(47) FW September 1993
 *	- fixed EOL detection in ccpp:flushtoeol ().
 *	- implemented new command-line option "-b[89]" for
 *		wide-character source files (PPS 4761).
 *	- implemented new command-line option "-r=n" to specify
 *		the number of non-preserved registers.
 *	- added function jwarn () to deal with situations that
 *		involve bad arguments to command-line options
 *		where defaults can be supplied so that compilation
 *		need not be aborted.
 *	  Files affected: CC.C, CC.H, CCPP.C, CCREG.C, CCREG.H,
 *		CCDECL.C, CCGEN.C, CCOUT.C, CCERR.C, CCERR.H
 *
 * 2A(50) FW September 1993
 *	- more corrections in CCPP for "//" comments.  Usually
 *		(but not always), we need to call pushch ()
 *		after a scancomm () to discard a "//" comment,
 *		to make sure that the EOL is detected.  There
 *		was also a wrong condition test in pass_line ().
 *		However, a test program for "//" comments has
 *		composed by Tim Abels and added to the Plum-
 *		Hall validation suite; these comments should now
 *		be right.
 *	  File affected: CCPP.C
 *
 * 2A(51) FW January 1994
 *	- removed ALL remaining support for: processors other than
 *		single-section KL (and workalikes); operating
 *		systems other than TOPS-10 (and workalikes);
 *		assemblers other than MACRO.  The processor
 *		restriction has the extra benefit that KCC now
 *		generates *no* MACRO constructs that result in
 *		Polish fixups.
 *	- added "-k" option for long identifiers.  MACRO is
 *		invoked with "/k", and identifiers are emitted
 *		to the MACRO code full length, full strength.
 *
 * 2A(52) FW February 1994
 *	- implemented "interrupt" function type qualifier.
 *		Modules: cc, ccgen, ccgen1, ccgen2, ccdecl,
 *		cc.h, ccsym.h, cctoks.h
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -