home *** CD-ROM | disk | FTP | other *** search
- 1) Bit fields have been added. On the 68020 /2 switch 68020 bit field
- instructions will be used. Bit fields may be allocated in reverse
- order with the /C+r switch
-
- 2) Object file now has 3 main sections and /C-b switch:
- (68k)
- "code" code
- "data" pre-initialized (static) data
- "bss" uninitialized (static) data
- (386)
- ".code"
- ".data"
- ".?data"
- Other sectiions get added if there are pointers in the static
- data segment that need to be adjusted for the load address (68K only)
- To merge the bss and data segments use the /C-b switch; this reverts
- the compiler to the old two-segment behaviour. #pramd directives
- can also add other sections. See sections.doc
-
- 3) Several switchs have been added and others renamed. See switches.doc
-
- 4) /D switch now allows compile-time defines:
- /Daaa defines the symbol aaa
-
- 5) CONST and VOLATILE keywords are now supported in the ANSI
- fashion. This does not extend to CONST in front of a typedef name...
-
- 6) several #pragma directives have been added. These are primarily for
- library usage and will be documented at a later time. However
- you can disable static register optimizations with #pragma regopt:
-
- #pragma regopt /* No optimizations */
- #pragma regopt a /* Address regs may be optimized */
- #pragma regopt adf /* All registers may be used for optimization (default)*/
-
- unrecognized #pragma options will be ignored. Other #pragma
- keywords are startup and rundown; these will generate data in
- some of the extended sections. See macros.doc.
-
- 7) Lines which generate code are now embedded in the SRC file along
- with the line number. this is useful for a breakdown of what
- statements generate what code. This feature may be disabled
- with the /C-l switch.
-
- 8) The DOS versions now evaluate integer expressions properly when the integer
- is long.
-
- 9) New keywords have been added:
-
- declarations:
-
- _abs(4) int hi; (m68k only)
- defines a variable hi of type int at absolute address 4; the
- variable is accessed directly and not off of a register. Such
- variables may not be initialized.
-
- _interrupt func();
- defines a trap function (pushes regs & returns with rti)
-
-
- statements:
-
- _trap(trapnum,...);
- call a trap. The trap must index args off a0
-
- _genword(0x4040); (68k only)
- _genbyte(0x40); (386 only)
- embeddes a word or byte at the current place in the code segment. May be
- used for forcing instructions into the code segment.
-
-
- 10) Trigraphs have been added. They can't be used for token pasting though.
-
- 11) Compiler will now output a file showing the changes the preprocessor
- made. This file has a '.I' extension. It should itself be
- compilable. Note that if '\' is used to extend a line the preprocessor
- will output an extended line rather than breaking it into pieces.
- Also #pragma is not yet passed through to the .I file.
- use the +i switch to obtain this file.
-
- 12) sizeof function updated to handle variables, structure elements, partial
- arrays, and structure/enum tags.
-
- 13) New switches for code generation control and optimization.
-
- 14) Program will look for the symbol CC386 (or CC68K) in the environment.
- If it is present, it will be parsed just like the command line BEFORE the
- command line itself
-
- 15) Data may be 'packed' to take up the minimal space (/C+p switch).
- If the /2 switch is present words and dwords will be
- guaranteed to be on an even byte boundary (m68k). Packing does not
- affect function arguments. Even with packing, the stack will
- always be maintained on a DWORD boundary.
-
- If this switch is not present data will be aligned on appropriate
- boundaries for run-time speed.
-
- 16) Pointers to functions are updated to handle odd cases like arrays
- of pointers to functions. Functions may also return pointers to functions
- now.
-
- 17) postincrement and decrement modes now work properly
-
- 18) implicit casts now work properly
-
- 19) publics/externals now placed at start of file (386 only)
-
- 20) A variety of warning messages have been implemented. They can be
- disabled with the -w switch. At present neither errors nor warnings
- stop code generation (unless the number of errors is too large). Later
- errors will stop code generation and warnings will not.
-
- 15) Program will look for the symbol CCINCL in the environment. If it
- is present directory specificatios included in it will be processed
- when searching for include files