5.1 ANSI C 127 5.1.1 The preprocessor 127 5.1.2 The keywords const and volatile 130 5.1.3 Other changes 133 5.2 Internals of the SAS/C compiler 135 5.2.1 Preprocessor symbols 135 5.2.2 Compiler-generated symbol references 136 5.2.3 Memory models 136 5.2.3.1 Code models 138 5.2.3.2 Data models 138 5.2.4 The keywords __near, __far, and __huge 139 5.2.5 Other new keywords 140 5.2.6 In-line code 142 5.3 Parameters and results in C 143 5.3.1 Results 143 5.3.2 __stdargs - passing parameters on the stack 143 5.3.3 __regargs - passing parameters in D0, D1, A0, and A1 144 5.3.4 __asm - passing parameters in specific registers 144 5.3.5 <stdarg.h> - passing a variable number of parameters 145 5.3.6 Combining C and assembly language 146 5.4 Compilation 147 5.4.1 LC1 - from source code to the quads 147 5.4.1.1 Preprocessor 147 5.4.1.2 Lexical analysis 148 5.4.1.3 Parsing (syntactical analysis) 149 5.4.1.4 Checking (semantic analysis) 149 5.4.1.5 Translation 149 5.4.2 Optimizing the code 150 5.4.3 LC2 - from the quads to the object module 150 5.4.4 BLink - tying up the loose ends 150 5.4.5 Further optimizations 151 5.5 Two examples 151 Listing dalloc.c 153 Listing Makefiles (dalloc.o) 154 Listing HelloWorld.c 155 Listing HelloAmiga.c 155 Listing Makefiles (HelloWorld, HelloAmiga) 156 Listing AmigaSieve.c 156 Listing Makefiles (AmigaSieve) 158