目 录 1
第0章 引言 1
第一章 NDP C编译器的运行 2
1.1 手册的设计与更新原则 2
1.2 系统的硬件需求 2
1.3 系统的软件需求 3
1.4 软件及文档组成 3
1.5 安装过程 4
1.6 测试已安装的编译器 5
1.7 编译驱动程序:cc 7
1.8 环境变量和编译驱动程序 7
1.9 编译程序使用概述 10
1.10 使用PharLap汇编程序 15
1.11 使用Phar Lap连接程序 16
1.12 Phar Lap的DOS扩展程序RUN386 17
1.13 不带协处理器时的编译 19
第二章 使用编译驱动程序——cc 20
2.1 cc的描述 20
2.3 编译驱动程序的选项和开关 21
2.2 cc的语法 21
2.4 通用选项和开关 22
2.5 编译控制开关 23
2.6 数值协处理器控制开关 23
2.7 代码生成器的控制 24
2.8 优化开关 25
2.9 关闭缺省的优化开关 25
第三章 使用Mini—Make 26
3.1 启动Mini—Make 26
4.2 基本C语言的扩展 31
第四章 NDP C—386的扩展 31
4.1 NDPC—386规范 31
第五章 优化 35
5.1 引言 35
5.2 优化 35
5.3 基准测试 36
5.4 NDP C—386实现的存储类型 46
5.5 通用优化技术 52
第六章 与NDP编译程序的接口 54
6.1 引言 54
6.2 NDP语言之间的接口 55
6.3 NDP语言与汇编语言之间的接口 75
6.4 与实模式例程的接口 125
第七章 向NDP C—386移植程序 159
7.1 与其他MicroWay NDP编译程序的兼容性 159
7.2 有关字长的问题 159
7.3 有关字节顺序的问题 159
7.6 汇编语言接口 160
7.8 编译优化的非法假定 160
7.7 表达式的求值顺序 160
7.5 浮点数的范围和精度 160
7.4 对齐的要求 160
7.9 隐含的寄存器用法 161
7.10 内存分配假定 161
7.11 —MO和—OLM 161
7.12 源程序级调试器的有关问题 161
7.13 编译程序的内存大问题 161
第八章 错误信息和恢复 163
8.1 第一遍扫描错 163
8.2 第二遍扫描错 163
8.3 运行错误 164
9.1 概述 165
9.2 库函数详解 165
bort 165
abs 165
第九章 NDP C—386库函数 165
access 166
acos 168
asctime 169
asin 169
atan2 170
assert 170
atan 170
atexit 172
atof 173
atoi 173
atol 173
bcmp 174
bcopy 174
bzero 175
bufcpy 175
bsearch 175
cabs 176
calloc 177
ceil 178
cfree 178
_cleanup 180
clearerr 181
clearn 181
close 182
clock 182
cos 183
cosh 183
creat 184
ctime 185
difftime 186
div 186
_doprnt 186
_ doscan 186
ecvt 187
erf 188
erfc 190
exit 191
_exit 191
exp 192
fabs 193
fclose 193
fcvt 193
fdopen 195
ferror 196
feof 196
fflush 197
ffs 198
fgetc 198
fgetpos 199
fgets 199
fileno 201
filln 202
floor 203
fls 203
fopen 204
fmod 204
fprintf 205
fputc 206
fputs 206
fread 207
free 209
freopen 209
frexp 210
fscanf 211
fseek 212
ftell 213
fsetpos 213
ftrucate 215
fwrite 215
gamma 217
gcvt 218
getc 219
getchar 220
getenv 220
getl 220
gets 221
getpid 221
getw 223
gmtime 224
hypot 224
index 225
isalnum 225
isalpha 225
iscntrl 225
isprint 226
ispunct 226
isgraph 226
islower 226
isdigit 226
isspace 227
isupper 227
isxdigit 227
isatty 227
jO 227
j1 228
jn 229
labs 230
ldexp 230
ldiv 231
localeconv 231
localtime 232
log 232
log10 233
longjmp 233
malloc 234
lseek 234
mblen 235
mbstowcs 235
mbtowc 235
memccpy 235
memchr 236
memcmp 237
memcpy 237
memicmp 238
memmove 239
mktime 240
memset 240
modf 241
ndptype _ 241
open 242
perror 243
pow 244
printf 244
putc 246
putchar 246
putl 247
puts 248
putw 248
pxerror 250
qsort 250
raise 251
racos 251
rand 252
rasin 252
ratan 253
ratan2 254
rcos 256
rcosh 257
read 258
realloc 259
rename 261
rewind 261
rexp 262
rindex 263
rsin 265
rsinh 266
rsqrt 267
rtan 268
rtanh 269
sbrk 270
scanf 271
set_ buf_ size 272
setmode 274
set_ num_ buffers 275
setbuf 277
setjmp 278
setlinebuf 279
setlocale 280
setvbuf 280
signal 281
sin 281
sinh 282
spawn 282
sprintf 283
sqrt 284
srand 285
sscanf 286
strcat 287
strchr 287
strcmp 288
strcoll 289
strcpy 289
strcspn 290
strerror 290
strindex 290
strlen 291
strncat 292
strncmp 293
strncpy 294
strpbrk 294
strrchr 294
strrindex 295
strsave 296
strspn 297
strstr 297
strtol 298
strtok 298
strtoul 299
strxfrm 299
swab 299
system 300
tan 300
tanh 301
time 302
tmpfile 302
tmpnam 302
tolower 303
toascii 303
toupper 304
trucate 305
ungetc 306
unlink 306
va_start 307
va_arg 307
wcstowbs 308
vsprintf 308
vprintf 308
ufprintf 308
va_end 308
wetowb 309
write 309
yO 309
yl 310
yn 311
第十章 数值协处理器支持 313
10.1 编译器的浮点选项——开关n 314
10.2 数值异常——主动与被动处理 315
10.3 协处理器结构 317
10.4 IEEE数值系统介绍 320
10.5 内部NDP异常处理函数 329
10.6 NDP异常处理程序的定制和编写 333
10.7 舍入、精度,及无穷大控制 344
第十一章 NDP C—386扩展图形库GREX 354
11.1 引言 354
11.2 设计的考虑 354
11.3 库的组成 355
11.4.1 图形例程 357
11.4 库中的函数 357
11.4.2 文本方式例程 358
11.4.3 端口、块与中断例程 359
11.4.4 DOS时间与日期函数 359
11.5 图形例程详解 360
11.6 文本例详解 379
11.7 端口、块中断例程详解 398
11.8 DOS时间与日期函数 401
11.9 与Microsoft C图形库兼容的函数 402
11.10 例子程序cdemo.c和textwin.c 404
第十二章 跟踪与调试 405
12.1 引言 406
12.2 调试过程 406
12.3 内存保护错误 406
12.4 编制一个快速的_user_debug_例程 407
第十三章 寄存器别名变量——C嵌入汇编 410
13.1 寄存器别名变量 411
14.3 基本数据类型 422
14.2 语法 422
14.1 引言 422
第十四章 NDP C—386语言概述 422
14.4 与硬件有关的信息 424
14.5 关键字 424
14.6 操作码 426
14.7 表达式 428
14.8 语句 428
14.8 预处理伪指令 429
附录A 编译错误信息 432
附录B 运行错误信息 435
附录C 可从Fortran和C中调用的时间与日期函数 438