程序代写代做代考 arm GPU javascript scheme chain file system flex RISC-V Java algorithm c# SQL c/c++ interpreter cuda FTP computer architecture gui Excel mips ER android ada x86 prolog IOS matlab ant Fortran database compiler c++ assembly cache assembler concurrency python Hive C/C++ compilers

C/C++ compilers

C/C++ compilers

Contents

1 Acorn C/C++ 1
1.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Amsterdam Compiler Kit 3
2.1 Target processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.4 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Aztec C 5
3.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 Current status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Current use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4 BDS C 7
4.1 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

5 Borland Turbo C 8
5.1 Early history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.2 Version history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.3 Freeware release . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
5.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5.6 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

i

ii CONTENTS

6 cc65 10
6.1 Supported API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6.1.1 static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
6.1.2 dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

6.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

7 ccache 11
7.1 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

8 CFLAGS 12
8.1 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
8.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

9 Clang 13
9.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9.2 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
9.3 Performance and GCC compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.4 Status history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
9.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

10 CodeWarrior 16
10.1 Old versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
10.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
10.3 Origin of the name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
10.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
10.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

11 Comeau C/C++ 18
11.1 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
11.2 Standards compliance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
11.3 Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
11.4 Current status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
11.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
11.6 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

12 Deep Blue C 20
12.1 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

CONTENTS iii

12.2 Sample program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.3 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

13 Digital Mars 21
13.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
13.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

14 DJGCC 22
14.1 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
14.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
14.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

15 DJGPP 23
15.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
15.2 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
15.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
15.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
15.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

16 FpgaC 25
16.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
16.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

17 GNU Compiler Collection 26
17.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
17.2 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

17.2.1 Front ends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
17.2.2 GENERIC and GIMPLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
17.2.3 Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
17.2.4 Back end . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
17.2.5 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

17.3 Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
17.4 Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
17.5 Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
17.6 C library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
17.7 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
17.8 Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
17.9 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
17.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

iv CONTENTS

17.11Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
17.12External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

17.12.1 Official . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
17.12.2 Other . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

18 HP aC++ 34
18.1 Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
18.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

19 IBM XL C/C++ Compilers 35
19.1 Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
19.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
19.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

20 Intel C++ Compiler 37
20.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
20.2 Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
20.3 Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
20.4 Description of packaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
20.5 History Since 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
20.6 Flags and manuals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
20.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
20.8 Criticism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
20.9 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
20.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
20.11External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

21 LabWindows/CVI 40
21.1 Release history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
21.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
21.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

22 Lattice C 41
22.1 Reception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
22.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
22.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

23 LCC (compiler) 42
23.1 LCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
23.2 Projects incorporating LCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

23.2.1 Quake 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

CONTENTS v

23.2.2 lcc-win . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
23.2.3 Pelles C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
23.2.4 Mathworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

23.3 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
23.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
23.5 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

24 Macintosh Programmer’s Workshop 44
24.1 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
24.2 MPW Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

24.2.1 Look and feel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
24.3 Other tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
24.4 Writing MPW tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
24.5 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
24.6 Legacy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
24.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
24.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
24.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

25 Megamax C 47
25.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

26 MinGW 48
26.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
26.2 Programming language support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
26.3 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
26.4 Comparison with Cygwin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
26.5 MinGW-w64 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
26.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
26.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
26.8 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

27 Norcroft C compiler 51
27.1 Supported architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

27.1.1 Acorn C/C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
27.1.2 INMOS Transputer C Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
27.1.3 Cambridge Consultants XAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

27.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
27.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

vi CONTENTS

28 Open64 53
28.1 The infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
28.2 Intermediate representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
28.3 Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

28.3.1 Open64 releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
28.3.2 AMD x86 Open64 releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

28.4 Current development projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
28.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
28.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
28.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

29 Oracle Developer Studio 55
29.1 Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
29.2 Supported architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
29.3 Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
29.4 Compiler optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
29.5 OpenMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
29.6 Code coverage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
29.7 GCCFSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
29.8 Research platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
29.9 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
29.10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
29.11External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

30 PathScale 57
30.1 Contents of the PathScale EKOPath Compiler Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
30.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
30.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
30.4 Further reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
30.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

31 Pelles C 59
31.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
31.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

32 Portable C Compiler 60
32.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
32.2 Current version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
32.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
32.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

CONTENTS vii

32.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

33 The Portland Group 62
33.1 Company history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
33.2 Product and market history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

33.2.1 Compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
33.2.2 Programming Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
33.2.3 PGI Milestones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

33.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
33.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
33.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

34 QuickC 64
34.1 Version history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
34.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
34.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

35 ROSE (compiler framework) 66
35.1 The infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
35.2 Award . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
35.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
35.4 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

36 Small Device C Compiler 67
36.1 Supported target architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
36.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
36.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
36.4 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

37 Small-C 69
37.1 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
37.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
37.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

38 Softune 70
38.1 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
38.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
38.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

39 TenDRA Compiler 71
39.1 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

viii CONTENTS

39.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
39.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
39.4 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

40 THINK C 73
40.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
40.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

41 Tiny C Compiler 74
41.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
41.2 Compiled program performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
41.3 Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
41.4 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
41.5 Current status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
41.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
41.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
41.8 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

42 vbcc 77
42.1 Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
42.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

43 Visual C++ 79
43.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

43.1.1 16-bit versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
43.1.2 Strictly 32-bit versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
43.1.3 32-bit and 64-bit versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

43.2 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
43.2.1 ABI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
43.2.2 C runtime libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
43.2.3 C99 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

43.3 Common MSVC version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
43.4 Controversy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
43.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
43.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
43.7 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

44 IBM VisualAge 84
44.1 Early history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

44.1.1 Name brand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

CONTENTS ix

44.1.2 Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
44.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
44.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
44.4 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

45 Watcom C/C++ 87
45.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

45.1.1 Release history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
45.2 License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
45.3 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
45.4 Uses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
45.5 Variants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
45.6 Compatibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
45.7 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
45.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
45.9 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

46 Z88DK 89
46.1 Supported target platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
46.2 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
46.3 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

47 Borland C++ 91
47.1 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
47.2 Add-ons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
47.3 Version history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
47.4 Evolution of Borland C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
47.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
47.6 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

48 C++/CX 93
48.1 Extension syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

48.1.1 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
48.2 Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
48.3 Runtime library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
48.4 Preprocessor-based detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
48.5 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
48.6 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

49 C++Builder 95

x CONTENTS

49.1 Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
49.2 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

49.2.1 Borland C++Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
49.2.2 CodeGear Borland C++Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
49.2.3 Embarcadero C++Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

49.3 OS X support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
49.4 Version history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
49.5 Editions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
49.6 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
49.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
49.8 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

50 Cfront 99
50.1 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
50.2 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

51 Shed Skin 100
51.1 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
51.2 Type inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
51.3 Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
51.4 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
51.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
51.6 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

52 Turbo C++ 102
52.1 History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
52.2 Legacy software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
52.3 See also . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
52.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
52.5 External links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
52.6 Text and image sources, contributors, and licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

52.6.1 Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
52.6.2 Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
52.6.3 Content license . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

Chapter 1

Acorn C/C++

Acorn C/C++ is a set of C/C++ programming tools for
use under the RISC OS operating system. The tools use
the Norcroft compiler suite and were authored by Codemist
and Acorn Computers.[2] The tools provide some facilities
offered by a fully integrated development environment.
Acorn included a copy of the Norcroft compiler targeted at
the ARM architecture for RISC OS in the following devel-
opment software.

• Acornsoft ANSI C

• Acornsoft ANSI C (Release 2)

• Acorn ANSI C (Release 3) – 1989[3]

• Acorn Desktop C (Release 4)

• Acorn C/C++ (Release 5) – 1995[4]

1.1 History

Acorn’s work on ANSI C compilers was begun around
1987,[2] with a commercial release in 1988 for its
Archimedes computer.[5] Desktop C and Desktop Assem-
bler were released in 1991.[2] Codemist worked primarily
on the ANSI C standard, while Acorn concentrated on the
RISC OS specifics and optimisation for the ARM. Both par-
ties exchanged sources regularly.[2][6]

The tools were originally developed by university academics
Alan Mycroft and Arthur C Norman of Codemist.[7] Their
development was taken up by Acorn and subsequently taken
over by Castle Technology, who later added the lacking
C99[8] support. Castle funded further development by
means of a subscription scheme.[9] In early 2009, develop-
ment and sales of the tools were transferred to RISC OS
Open.[10]

1.2 Uses

The Norcroft compiler can be used to produce RISC OS
modules, as well as compiling parts of the operating system
itself. Before beginning development of the Inform pro-
gramming language, Graham Nelson originally used Nor-
croft C to develop his text adventure Curses.[11][12]

The suite of tools is currently the only means of building a
working copy of RISC OS, although it is ultimately intended
that this will also be possible using a cross compiler, e.g.
using the free software GCC system.[13]

1.3 See also

• Arm Image Format

1.4 References
[1] Revill, Steve (2015-10-22). “Official DDE gets autumn

makeover”. RISC OS Open. Retrieved October 22, 2015.
This latest update (DDE26) folds in a number of fixes and
enhancements.

[2] “Interview with Ian Johnson”. CAUGers. ACCU. Retrieved
2011-06-30. Acorn began work on ANSI C compilers
around 1987. C release 3 was made in 1989, and was fol-
lowed by Desktop C and Desktop Assembler in 1991. The
development of the compiler was a joint venture between
Norcroft (at the time Arthur Norman and Alan Mycroft–two
academics from Cambridge University Computing Labs)
and the PLG at Acorn. Sources were regularly exchanged
between both parties but, generally, Norcroft were respon-
sible for adherence to the emerging ANSI standard, whilst
Acorn concentrated on the RISC OS specifics of the C li-
brary and on common subexpression elimination, register al-
location and peephole optimisation for the ARM.

[3] Acorn – ANSI C (Release 3)

[4] Acorn – Sales News 127 – 6th Feb 1995

1

https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/C++
https://en.wikipedia.org/wiki/Programming_tool
https://en.wikipedia.org/wiki/RISC_OS
https://en.wikipedia.org/wiki/Norcroft_compiler_suite
https://en.wikipedia.org/wiki/Codemist
https://en.wikipedia.org/wiki/Acorn_Computers
https://en.wikipedia.org/wiki/Integrated_development_environment
https://en.wikipedia.org/wiki/ARM_architecture
https://en.wikipedia.org/wiki/ANSI_C
https://en.wikipedia.org/wiki/Acorn_Archimedes
https://en.wikipedia.org/wiki/Alan_Mycroft
https://en.wikipedia.org/wiki/Castle_Technology
https://en.wikipedia.org/wiki/C99
https://en.wikipedia.org/wiki/RISC_OS_Open
https://en.wikipedia.org/wiki/RISC_OS_Open
https://en.wikipedia.org/wiki/Loadable_kernel_module
https://en.wikipedia.org/wiki/Operating_system
https://en.wikipedia.org/wiki/Inform_programming_language
https://en.wikipedia.org/wiki/Inform_programming_language
https://en.wikipedia.org/wiki/Graham_Nelson
https://en.wikipedia.org/wiki/Curses_(video_game)
https://en.wikipedia.org/wiki/Cross_compiler
https://en.wikipedia.org/wiki/Free_software
https://en.wikipedia.org/wiki/GCC_(software)
https://en.wikipedia.org/wiki/Arm_Image_Format
https://www.riscosopen.org/news/articles/2015/10/22/official-dde-gets-autumn-makeover
https://www.riscosopen.org/news/articles/2015/10/22/official-dde-gets-autumn-makeover
https://en.wikipedia.org/wiki/RISC_OS_Open
http://www.accu.informika.ru/acornsig/public/caugers/volume2/issue1/ianjohnson.html
https://en.wikipedia.org/wiki/ACCU_(organisation)

http://chrisacorns.computinghistory.org.uk/docs/Acorn/Brochures/Acorn_APP160_ANSICR3.pdf


http://chrisacorns.computinghistory.org.uk/docs/Acorn/SN/Acorn_SalesNews127.pdf

2 CHAPTER 1. ACORN C/C++

[5] Norman, A.C. (2005). “Thirty Years of Lisp Support for
REDUCE”. In Dolzmann, Andreas. Algorithmic algebra
and logic : proceedings of the A3L 2005, April 3–6, Passau,
Germany conference in honor of the 60th birthday of Volker
Weispfenning. Seidl, Andreas; Sturm, Thomas; Weispfen-
ning, Volker. Passau, Germany. ISBN 978-3-8334-2669-
8. OCLC 63200315. In 1989 […] concurrently working
with Alan Mycroft developing the Norcroft [MN88 – 1988]
C compiler, and so we were especially well in tune with the
emerging ANSI C standard.

[6] “Codemist Compilers / Norcroft”. Bath, UK: Codemist Ltd.
2010. Retrieved 2011-10-21. We have created C compilers
for a range of computers, from mainframes to embedded
special purpose chips. […] the following partial list will give
an idea of the range of our output. Acorn Computers ARM
C Compiler. This is the original ANSI C compiler known as
Norcroft C.

[7] Mycroft, Alan; Norman, Arthur C. (1992). “Part I: clas-
sical imperative languages”. Optimising compilation. Cam-
bridge, UK: University of Cambridge, Computer Labora-
tory. CiteSeerX 10.1.1.43.9953 . OCLC 29982690. […]
the ‘Norcroft’ compiler suite jointly constructed by the au-
thors […] Commercial interests are referred to Codemist
Ltd. […]

[8] “Norcroft versus GCC”. riscos.info. Archived from the
original on 2002-04-04. Retrieved 2011-06-16. Norcroft:
Faster than GCC to compile programs, probably by about
two times. GCC: Supports a much newer C++ implementa-
tion than Norcroft, as well as C99.

[9] Williams, Chris (2004-04-29). “CTL launch C/C++ com-
piler sub scheme”. Drobe. Retrieved 2011-06-16. Castle
has announced the launch of a subscription scheme for its
C/C++ development suite. The scheme aims to fund future
development of the compiler suite through annual subscrip-
tions […]

[10] “News in brief”. Drobe. 2009-05-04. Retrieved 2011-06-
16. RISC OS Open has taken over sales of the Acorn C/C++
development suite, known as the Norcroft compiler, which
is used to build RISC OS.

[11] Montfort, Nick (2005). “7 The Independents”. Twisty little
passages : an approach to interactive fiction. Cambridge,
Massachusetts, United States: MIT Press. ISBN 0-262-
63318-3. Before Nelson began work on Inform […] Us-
ing an Acorn Archimedes and programming in ANSI C,
he quickly abandoned his small game to begin developing
Curses, using that to put the in-progress compiler through its
paces.

[12] “Interview: Graham Nelson”. XYZZY News. Eileen Mullin.
Archived from the original on 2008-10-30. Retrieved 2008-
10-30. I use two languages, the excellent Norcroft ANSI C
compiler and Inform.

[13] Avison, Ben (2010-05-20). “Cross compilation support”.
RISC OS Open. Retrieved October 21, 2011. […] the

completion of Pace’s cross-compilation project – an initial
milestone on the path to full cross-compilation support. […]
Most of them build on Linux, targetting RISC OS, using the
GCC toolchain […]

1.5 External links
• “C/C++ Development Suite at iyonix.com”. Archived

from the original on 2008-05-14. Retrieved 2008-05-
14.

• ROOL Desktop Development Environment – RISC
OS Open

https://books.google.com/books?id=TGceTyXcgsYC&pg=PA185&dq=compiler+mycroft+norman#v=onepage&q=norcroft&f=false
https://books.google.com/books?id=TGceTyXcgsYC&pg=PA185&dq=compiler+mycroft+norman#v=onepage&q=norcroft&f=false
https://books.google.com/books?id=TGceTyXcgsYC&pg=PA185&dq=compiler+mycroft+norman#v=onepage&q=norcroft&f=false
https://books.google.com/books?id=TGceTyXcgsYC&pg=PA185&dq=compiler+mycroft+norman#v=onepage&q=norcroft&f=false
https://en.wikipedia.org/wiki/International_Standard_Book_Number
https://en.wikipedia.org/wiki/Special:BookSources/978-3-8334-2669-8
https://en.wikipedia.org/wiki/Special:BookSources/978-3-8334-2669-8
https://en.wikipedia.org/wiki/OCLC
https://www.worldcat.org/oclc/63200315
http://www.codemist.co.uk/ncc/index.html
https://en.wikipedia.org/wiki/CiteSeerX
https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.9953
https://en.wikipedia.org/wiki/OCLC
https://www.worldcat.org/oclc/29982690
https://web.archive.org/web/20020404222725/http://www.riscos.info/compilers/compare.html
https://en.wikipedia.org/wiki/Riscos.info
http://www.riscos.info/compilers/compare.html
http://www.riscos.info/compilers/compare.html
http://www.drobe.co.uk/riscos/artifact1037.html
http://www.drobe.co.uk/riscos/artifact1037.html
https://en.wikipedia.org/wiki/Drobe
http://www.drobe.co.uk/article.php?id=2504
https://en.wikipedia.org/wiki/Drobe
https://en.wikipedia.org/wiki/Nick_Montfort
https://en.wikipedia.org/wiki/MIT_Press
https://en.wikipedia.org/wiki/International_Standard_Book_Number
https://en.wikipedia.org/wiki/Special:BookSources/0-262-63318-3
https://en.wikipedia.org/wiki/Special:BookSources/0-262-63318-3
http://www.webcitation.org/query?url=http%253A%252F%252Fwww.xyzzynews.com%252Fxyzzy.1c.html&date=2008-10-30
http://www.xyzzynews.com/xyzzy.1c.html
http://www.riscosopen.org/forum/forums/3/topics/394#posts-3539
https://en.wikipedia.org/wiki/RISC_OS_Open
https://web.archive.org/web/20080514205123/http://www.iyonix.com/tools/
http://www.iyonix.com/tools/
http://riscosopen.org/content/sales/dde
https://en.wikipedia.org/wiki/RISC_OS_Open
https://en.wikipedia.org/wiki/RISC_OS_Open

Chapter 2

Amsterdam Compiler Kit

The Amsterdam Compiler Kit (ACK) is a retargetable
compiler suite and toolchain written by Andrew Tanenbaum
and Ceriel Jacobs, and is MINIX’s native toolchain. The
ACK was originally closed-source software (that allowed
binaries to be distributed for MINIX as a special case), but
in April 2003 it was released under an open source BSD
license. It has frontends for programming languages C,
Pascal, Modula-2, Occam, and BASIC.
The ACK’s notability stems from the fact that in the early
1980s it was one of the first portable compilation systems
designed to support multiple source languages and target
platforms.[1][2]

The ACK achieves maximum portability by using an
intermediate language using bytecode, called EM. Each lan-
guage front-end produces EM object files, which are then
processed through several generic optimisers before being
translated by a back-end into native machine code.
ACK comes with a generic linker and librarian capable of
manipulating files in the ACK’s own a.out-based format; it
will work on files containing EM code as well as native ma-
chine code. However, EM code cannot be linked to native
machine code without translating the EM binary first.

2.1 Target processors

• 6502

• 6800 (assembler only)

• 6805 (assembler only)

• 6809 (assembler only)

• ARM

• 8080*

• Z80

• Z8000

• i86*

• i386
• 68000
• 68020
• 68040
• NS32016
• S2650 (assembler only)
• SPARC
• VAX4
• PDP11
• Broadcom VideoCore IV (BCM2708)*

* Version 6.0

2.2 See also
• C–
• LLVM
• GNU Compiler Collection
• Portable C Compiler
• Small Device C Compiler

2.3 References
[1] Tanenbaum, Andrew S; van Staveren, H.; Keizer, E.G.;

Stevenson, J.W. (1983). “A Practical Tool Kit For Mak-
ing Portable Compilers”. Communications of the ACM. 26
(9): 654–660. doi:10.1145/358172.358182.

[2] A.V Aho, R. Sethi & J.D. Ullman (1986). Compilers – Prin-
ciples, Techniques and Tools (“The Dragon Book”). Addison-
Wesley. p. 511. ISBN 0-201-10088-6.

3

https://en.wikipedia.org/wiki/Retargeting
https://en.wikipedia.org/wiki/Retargeting
https://en.wikipedia.org/wiki/Andrew_Tanenbaum
https://en.wikipedia.org/wiki/Ceriel_Jacobs
https://en.wikipedia.org/wiki/MINIX
https://en.wikipedia.org/wiki/Toolchain
https://en.wikipedia.org/wiki/Executable
https://en.wikipedia.org/wiki/Open_source
https://en.wikipedia.org/wiki/BSD_licenses
https://en.wikipedia.org/wiki/Programming_language
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Pascal_(programming_language)
https://en.wikipedia.org/wiki/Modula-2
https://en.wikipedia.org/wiki/Occam_(programming_language)
https://en.wikipedia.org/wiki/BASIC
https://en.wikipedia.org/wiki/Intermediate_language
https://en.wikipedia.org/wiki/Bytecode
https://en.wikipedia.org/wiki/EM_intermediate_language
https://en.wikipedia.org/wiki/Object_file
https://en.wikipedia.org/wiki/Machine_code
https://en.wikipedia.org/wiki/A.out
https://en.wikipedia.org/wiki/6502
https://en.wikipedia.org/wiki/Motorola_6800
https://en.wikipedia.org/wiki/Motorola_6800
https://en.wikipedia.org/wiki/6809
https://en.wikipedia.org/wiki/ARM_architecture
https://en.wikipedia.org/wiki/Intel_8080
https://en.wikipedia.org/wiki/Z80
https://en.wikipedia.org/wiki/Z8000
https://en.wikipedia.org/wiki/Intel_8086
https://en.wikipedia.org/wiki/I386
https://en.wikipedia.org/wiki/68000
https://en.wikipedia.org/wiki/68020
https://en.wikipedia.org/wiki/Motorola_68040
https://en.wikipedia.org/wiki/NS32016
https://en.wikipedia.org/wiki/Signetics_2650
https://en.wikipedia.org/wiki/SPARC
https://en.wikipedia.org/wiki/VAX_4000
https://en.wikipedia.org/wiki/PDP11
https://en.wikipedia.org/wiki/C–
https://en.wikipedia.org/wiki/LLVM
https://en.wikipedia.org/wiki/GNU_Compiler_Collection
https://en.wikipedia.org/wiki/Portable_C_Compiler
https://en.wikipedia.org/wiki/Small_Device_C_Compiler
http://cacm.acm.org/magazines/1983/9/10627-a-practical-tool-kit-for-making-portable-compilers/abstract
http://cacm.acm.org/magazines/1983/9/10627-a-practical-tool-kit-for-making-portable-compilers/abstract
https://en.wikipedia.org/wiki/Digital_object_identifier
https://dx.doi.org/10.1145%252F358172.358182
https://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools
https://en.wikipedia.org/wiki/International_Standard_Book_Number
https://en.wikipedia.org/wiki/Special:BookSources/0-201-10088-6

4 CHAPTER 2. AMSTERDAM COMPILER KIT

2.4 External links
• Official website

http://tack.sourceforge.net/

Chapter 3

Aztec C

Aztec C is a C compiler for MS-DOS, Apple II DOS 3.3
and ProDOS, Commodore 64, early Macintosh, CP/M-80,
Amiga, and Atari ST.

3.1 History

Manx Software Systems of Shrewsbury, New Jersey, pro-
duced C compilers beginning in the 1980s targeted at pro-
fessional developers for a variety of platforms up to and in-
cluding PCs and Macs.
Manx Software Systems was started by Harry Suckow, with
partners Thomas Fenwick, and James Goodnow II, the two
principal developers. They were all working together at
another company at the time. Suckow had started several
companies of his own anticipating the impending growth of
the PC market, with each company specializing in different
kinds of software. A demand came for compilers first and
he disengaged himself from the other companies to pursue
Manx and Aztec C.
Suckow took care of the business side, Fenwick specialized
in front-end compiler development, and Goodnow special-
ized in back-end compiler development. Another devel-
oper, Chris Macey, worked with them for a while on 80XX
development and in other areas.
The name “Manx” was selected from a list of cats for no
particular reason except that the name Suckow wanted to
use was taken.
One of the main reasons for Aztec C’s early success was
the floating point support for the Z80 compiler which was
extended to the Apple II shortly after. Suckow insisted on
adding floating point.
During the move to ANSI C in 1989, Robert Sherry who
was with Manx at the time and interested in the minutiae of
standards represented them on the ANSI committee but left
shortly after. He also fixed numerous bugs in the Aztec C
after Chris Macey and Thomas Fenwick left the company.
By this time Microsoft had targeted competitors for their C

compiler and Aztec C was being pushed-out of the general
IBM-PC compiler market, followed by competition with
Apple’s MPW C on the Macintosh side and Lattice C on
the Amiga after SAS bought them.
In 1989 Thomas Fenwick left to work for Microsoft, and
James Goodnow worked on Aztec C occasionally but was
pursuing other projects outside the company and eventu-
ally left the company altogether. Suckow employed about
20 people at that time. Chris Macey returned as a consul-
tant but eventually left to become chief scientist for another
company. Mike Spille joined Manx as a developer along
with the late Jeff Davis (embedded systems).
Throughout the 1990s they continued to make their Aztec
C. As their market share dropped, they tried to make the
move to specializing in embedded systems development,[1]
but it was too late. They disappeared a few years back fol-
lowing the loss of market presence of some of their target
platforms (various 6502 machines, Atari and Amiga 68xxx,
etc.).[2]

In the end, Jeff Davis and Mike Spille helped Harry Suckow
keep the company going before Suckow finally closed it.
Suckow is still the Copyright holder for Aztec C.
Many professional developers used the Manx Software
Systems’ Aztec C compiler until it became operationally
extinct.[3][4]

3.2 Current status

Aztec C remains copyrighted and has not been placed into
the public domain. Harry Suckow, who started Manx Soft-
ware Systems with partners Thomas Fenwick and James
Goodnow II, is the copyright holder.
Manx Software Systems native Aztec C compilers for Ap-
ple II development have been available for free download
from the Internet for a number of years as disk images for
Apple II emulators without copyright infringement action
being sought by Manx Software Systems.

5

https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/MS-DOS
https://en.wikipedia.org/wiki/Apple_II
https://en.wikipedia.org/wiki/Apple_DOS
https://en.wikipedia.org/wiki/ProDOS
https://en.wikipedia.org/wiki/Commodore_64
https://en.wikipedia.org/wiki/CP/M
https://en.wikipedia.org/wiki/Amiga
https://en.wikipedia.org/wiki/Atari_ST
https://en.wikipedia.org/wiki/Shrewsbury,_New_Jersey
https://en.wikipedia.org/wiki/New_Jersey
https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/IBM_PC
https://en.wikipedia.org/wiki/Macintosh
https://en.wikipedia.org/wiki/Zilog_Z80
https://en.wikipedia.org/wiki/Apple_II
https://en.wikipedia.org/wiki/Floating_point
https://en.wikipedia.org/wiki/ANSI_C
https://en.wikipedia.org/wiki/Microsoft
https://en.wikipedia.org/wiki/IBM_PC_compatible
https://en.wikipedia.org/wiki/Macintosh_Programmer%2527s_Workshop
https://en.wikipedia.org/wiki/Lattice_C
https://en.wikipedia.org/wiki/Amiga
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Embedded_system
https://en.wikipedia.org/wiki/MOS_Technology_6502
https://en.wikipedia.org/wiki/Atari
https://en.wikipedia.org/wiki/Amiga
https://en.wikipedia.org/wiki/68000
https://en.wikipedia.org/wiki/Copyright
https://en.wikipedia.org/wiki/Public_domain

6 CHAPTER 3. AZTEC C

At least two free Internet distributions exist for native Aztec
C Compilers for the Apple II; one for Apple II DOS 3.3 and
the other for Apple II ProDOS 8.[5] A third free Internet dis-
tribution exists for Aztec C for the Commodore Amiga.[5]
A fourth free Internet distribution exists for their MS-DOS
8086 native compiler,[5] and a fifth exists for a limited ver-
sion of their MS-DOS cross-compiler for Apple II ProDOS
8.

3.3 Current use

Emulators for these older now-obsolete platforms have be-
come popular with enthusiasts and hobbyists, and most em-
ulators are free or almost free. No commercial market ex-
ists for programs or development environments that run on
these older now-obsolete platforms.
Despite the fact that these compilers are no longer of any
commercial value, the native Aztec C Compilers for these
platforms are still as usable as they ever were on their re-
spective native platforms, and the MS-DOS Aztec C cross-
development compilers for these platforms work under
Windows XP. This means that a C programmer-enthusiast
can create programs in an emulator or in the Windows en-
vironment then run them on an emulator or transfer them
to a real (but obsolete) target computer using a serial cable
or some other means.

3.4 References
[1] “PC chipsets build a firm foundation for embedded applica-

tions”. sltf.com. Retrieved 24 June 2016.

[2] “Archived copy”. Archived from the original on December
15, 2007. Retrieved November 22, 2007.

[3] “Hardware and software vendor contact information, L-P”.
microsoft.com. Retrieved 24 June 2016.

[4] Kent, Allen; Williams, James G. (25 November 1992).
“Encyclopedia of Microcomputers: Volume 11 – Manage-
ment Studies to Multiprocessing and Multitasking”. CRC
Press. Retrieved 24 June 2016 – via Google Books.

[5] “The Official Aztec C Online Museum”. clipshop.ca. Re-
trieved 24 June 2016.

https://en.wikipedia.org/wiki/MS-DOS
https://en.wikipedia.org/wiki/Cross-compiler
https://en.wikipedia.org/wiki/Emulator
https://en.wikipedia.org/wiki/MS-DOS
https://en.wikipedia.org/wiki/Cross_compiler
https://en.wikipedia.org/wiki/Cross_compiler
https://en.wikipedia.org/wiki/Windows_XP
http://www.sltf.com/articles/pein/pein9103.htm
http://www.sltf.com/articles/pein/pein9103.htm
https://web.archive.org/web/20071215083657/http://www.itee.uq.edu.au/~csmweb/decompilation/hist-c-pc.html
http://www.itee.uq.edu.au/~csmweb/decompilation/hist-c-pc.html
http://support.microsoft.com/kb/60781
https://books.google.com/books?id=hDBPy-C7jl4C&pg=RA1-PA99&lpg=RA1-PA99&dq=%2522manx%2520software%2520systems%2522%2520shrewsbury&source=web&ots=oq6cR0v7fm&sig=miY94IawT6O0DHp7uo74RetGIy0
https://books.google.com/books?id=hDBPy-C7jl4C&pg=RA1-PA99&lpg=RA1-PA99&dq=%2522manx%2520software%2520systems%2522%2520shrewsbury&source=web&ots=oq6cR0v7fm&sig=miY94IawT6O0DHp7uo74RetGIy0
http://www.clipshop.ca/Aztec/index.htm#apple

Chapter 4

BDS C

BDS C (or the BD Software C Compiler) is a compiler for a
sizeable subset of the C programming language, that ran on
and generated code for the Intel 8080 and Zilog Z80 proces-
sors. It was the first C compiler for CP/M.[1] It was written
by Leor Zolman[2] and first released in 1979 when he was
20 years old. “BDS” stood for “Brain Damage Software”.
BDS C was very popular and influential among CP/M users
and developers in the 8-bit microcomputer era. It ran much
faster and was more convenient to use than other Z80-
hosted compilers of the time. It was possible to run BDS C
on single-floppy machines with as little as 30K of RAM –
something of a minor miracle by comparison to most other
commercial compilers which required many passes and the
writing of intermediate files to disk. Around 75,000 copies
were sold, including a stripped down Japanese incarnation.
A number of important commercial CP/M products were
written in the BDS C subset of the C language, including
PeachText from PeachTree Software, MINCE and Scrib-
ble from Mark of the Unicorn, and most of the soft-
ware in the Perfect Software suite including Perfect Writer,
PerfectCalc, PerfectSpeller and PerfectFiler (which suite
was bundled with the Kaypro).
BDS C supported pointers and was very memory efficient,
with fast compilation speeds. Weak points were that the
floating point math routines were incompatible with the
Unix C compiler’s, and its relocatable object files were not
compatible with the Microsoft assembler, making it more
difficult to integrate C code with assembly language.[3]

BDS C was bundled with a significant subset of the Unix
system written in about 1980, called MARC (Machine As-
sisted Resource Coordinator). This effort in some ways re-
sembled GNU, though MARC was to be able to run CP/M
software through emulation. Unfortunately MARC’s au-
thor, Ed Ziemba, perished in a snorkeling accident before
he could complete the project.[4]

In 2002, with its commercial viability long past, Leor Zol-
man released BDS C’s source code into the public domain,
thus making it free and open-source software. Written in
8080 assembly language, the code is now mostly of histor-

ical rather than practical interest, but it is interesting to pe-
ruse for anyone wishing to see how sizeable programs for
small computers were written in those days.

4.1 See also
• Small-C

4.2 References
[1] “The Official Book for the Commodore 128”. BDS-C was

the first version of C on the market for CP/M. It has evolved
over the years into a very bug-free product preferred by many
users. The language is not as complete as the one described
by Kernighan and Ritchie’s The C Programming Language
(Prentice-Hall, 1978), but it does contain a large subset of
the important features.

[2] about

[3] “The Official Book for the Commodore 128”.

[4] InfoWorld (17 Aug 1981)

4.3 External links
• BD Software download page

• MUF Mastery – historical note about Leor Zolman and
BDS C

• Interview with Leor Zolman

• BDS C Users Group

7

https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Intel_8080
https://en.wikipedia.org/wiki/Zilog_Z80
https://en.wikipedia.org/wiki/C_compiler
https://en.wikipedia.org/wiki/CP/M
https://en.wikipedia.org/wiki/CP/M
https://en.wikipedia.org/wiki/8-bit_microcomputer
https://en.wikipedia.org/wiki/Floppy
https://en.wikipedia.org/wiki/Random_access_memory
https://en.wikipedia.org/wiki/PeachText
https://en.wikipedia.org/wiki/PeachTree_Software
https://en.wikipedia.org/wiki/MINCE
https://en.wikipedia.org/wiki/Mark_of_the_Unicorn
https://en.wikipedia.org/wiki/Perfect_Software
https://en.wikipedia.org/wiki/Perfect_Writer
https://en.wikipedia.org/wiki/PerfectCalc
https://en.wikipedia.org/wiki/PerfectSpeller
https://en.wikipedia.org/wiki/PerfectFiler
https://en.wikipedia.org/wiki/Kaypro
https://en.wikipedia.org/wiki/Pointer_(computer_programming)
https://en.wikipedia.org/wiki/Floating_point
https://en.wikipedia.org/wiki/Assembly_language
https://en.wikipedia.org/wiki/GNU
https://en.wikipedia.org/wiki/In-circuit_emulator
https://en.wikipedia.org/wiki/Snorkeling
https://en.wikipedia.org/wiki/Public_domain
https://en.wikipedia.org/wiki/Free_and_open-source_software
https://en.wikipedia.org/wiki/Assembly_language
https://en.wikipedia.org/wiki/Small-C
https://archive.org/stream/The_Official_Book_for_the_Commodore_128/The_Official_Book_for_the_Commodore_128_djvu.txt
http://www.bdsoft.com/about.html
https://archive.org/stream/The_Official_Book_for_the_Commodore_128/The_Official_Book_for_the_Commodore_128_djvu.txt
https://books.google.com/books?id=pD0EAAAAMBAJ&pg=PT14&lpg=PT14&dq=marc+ed+ziemba&source=bl&ots=2iWcn6Hwk1&sig=ExVtU-OFrnLbZklae0D9g7UH2ME&hl=en&ei=0L_3TPOLLo-t8AbVpKC2Bw&sa=X&oi=book_result&ct=result&resnum=3&ved=0CC0Q6AEwAg#v=onepage&q=marc%2520ed%2520ziemba&f=false
http://www.bdsoft.com/resources/bdsc.html
http://laurel.actlab.utexas.edu/~cynbe/muq/muf3_26.html
http://www.radiks.net/~jimbo/art/int4.htm
https://en.wikipedia.org/wiki/C/C++_Users_Journal

Chapter 5

Borland Turbo C

For technical reasons, “Turbo C#” redirects here. For the
article on the Turbo C# IDE, see Turbo C Sharp.

Turbo C is a discontinued Integrated Development En-
vironment and compiler for the C programming language
from Borland. First introduced in 1987, it was noted for its
integrated development environment, small size, fast com-
pile speed, comprehensive manuals and low price.
In May 1990, Borland replaced Turbo C with Turbo C++.
In 2006, Borland reintroduced the Turbo moniker.

5.1 Early history

In the early 1980s, Borland enjoyed considerable success
with their Turbo Pascal product and it became a popular
choice when developing applications for the PC. Borland
followed up that success by releasing Turbo Basic, Turbo
Prolog and Turbo C. Turbo C had the same properties as
Turbo Pascal: an integrated development environment, a
fast compiler (though not near the speed of Turbo Pascal[1]),
a good editor, and a competitive price.
Turbo C was not as successful as the Pascal-sister prod-
uct. First, C was a language for professional programming
and systems development rather than a school language.
Turbo C competed with other professional programming
tools (Microsoft C, Lattice C, Watcom C, etc.). Turbo C
did, however, have advantages in speed of compiled code,
large project support and price. It is developed in C.

5.2 Version history

Version 1.0 (May 13, 1987) offered the first integrated de-
velopment environment for C on IBM PCs. Like many Bor-
land products of the time, the software was bought from
another company (in this case Wizard C by Bob Jervis[2]),
and branded with the “Turbo” name. It ran in 384 kB of
memory. It allowed inline assembly with full access to C

symbolic names and structures, supported all memory mod-
els, and offered optimizations for speed, size, constant fold-
ing, and jump elimination.[3]

Version 1.5 (January 1988) was an incremental improve-
ment over version 1.0. It included more sample programs,
improved manuals and bug fixes. It was shipped on five 360
KB diskettes of uncompressed files, and came with sample
C programs, including a stripped down spreadsheet called
mcalc. This version introduced the header file
(which provided fast, PC-specific console I/O routines).
Version 2.0 (late 1988) featured the first “blue screen” ver-
sion, which would be typical of all future Borland releases
for MS-DOS. The American release did not have Turbo As-
sembler or a separate debugger. (These were sold separately
as Turbo Assembler.) Turbo C, Asm, and Debugger were
sold together as a suite. This seems to describe another re-
lease: Featured Turbo Debugger, Turbo Assembler, and an
extensive graphics library. This version of Turbo C was
also released (in Germany only) for the Atari ST; the pro-
gram was not maintained by Borland, but sold and renamed
PureC.
With the release of Turbo C++ 1.0 (in 1990), the two prod-
ucts were folded into one and the name “Turbo C” was dis-
continued. The C++ compiler was developed under con-
tract by a company in San Diego, and was one of the first
“true” compilers for C++ (until then, it was common to use
pre-compilers that generated C code, ref. Cfront).

5.3 Freeware release

In 2006, Borland’s successor, Embarcadero Technologies,
re-released Turbo C and the MS-DOS versions of the Turbo
C++ compilers as freeware.[4][5][6]

5.4 See also

• Turbo Assembler

8

https://en.wikipedia.org/wiki/Wikipedia:Naming_conventions_(technical_restrictions)#Forbidden_characters
https://en.wikipedia.org/wiki/Turbo_C_Sharp
https://en.wikipedia.org/wiki/Integrated_Development_Environment
https://en.wikipedia.org/wiki/Integrated_Development_Environment
https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Borland
https://en.wikipedia.org/wiki/Turbo_C++
https://en.wikipedia.org/wiki/Turbo_Pascal
https://en.wikipedia.org/wiki/Turbo_Basic
https://en.wikipedia.org/wiki/Turbo_Prolog
https://en.wikipedia.org/wiki/Turbo_Prolog
https://en.wikipedia.org/wiki/Integrated_development_environment
https://en.wikipedia.org/wiki/Microsoft_C
https://en.wikipedia.org/wiki/Lattice_C
https://en.wikipedia.org/wiki/Watcom_C/C++_compiler
https://en.wikipedia.org/wiki/IBM_PC
https://en.wikipedia.org/wiki/Diskette
https://en.wikipedia.org/wiki/Mcalc
https://en.wikipedia.org/wiki/MS-DOS
https://en.wikipedia.org/wiki/Turbo_Assembler
https://en.wikipedia.org/wiki/Turbo_Debugger
https://en.wikipedia.org/wiki/Germany
https://en.wikipedia.org/wiki/Atari_ST
https://en.wikipedia.org/wiki/Turbo_C++
https://en.wikipedia.org/wiki/Cfront
https://en.wikipedia.org/wiki/Embarcadero_Technologies
https://en.wikipedia.org/wiki/Freeware
https://en.wikipedia.org/wiki/Turbo_Assembler

5.6. EXTERNAL LINKS 9

• Turbo Debugger

5.5 References
[1] Hague, James. “A Personal History of Compilation Speed,

Part 2”. Programming in the 21st Century. Retrieved 2016-
06-05.

[2] Borland Backgrounder, 2/8/99

[3] “Computing Dictionary”. Foldoc.org. Retrieved 2016-06-
05.

[4] Tim DelChiaro (2011-09-01). “Free Borland C++ 5.5 Com-
piler”. Edn.embarcadero.com. Retrieved 2016-06-05.

[5] Intersimone, David (1989-05-11). “Antique Software:
Turbo C version 2.01”. Edn.embarcadero.com. Retrieved
2016-06-05.

[6] Intersimone, David (1991-02-28). “Antique Software:
Turbo C++ version 1.01”. Edn.embarcadero.com. Re-
trieved 2016-06-05.

5.6 External links
• borland.com – Borland Developer Network Museum

• turboexplorer.com – Turbo Explorer Homepage —
New downloadable versions of Turbo brand tools

• codegear.com – Turbo C++ version 1.01

• borland.com – Turbo C 2.01 Free download from EDN

• computermuseum-muenchen.de – Computer Museum
in Munich with a large collection of software, includ-
ing Turbo C 1.0 ff

https://en.wikipedia.org/wiki/Turbo_Debugger
http://prog21.dadgum.com/47.html
http://prog21.dadgum.com/47.html
https://groups.google.com/d/msg/borland.public.delphi.non-technical/QMdz7BbHDVg/T8bGnRFje3cJ
http://foldoc.org/index.cgi?Turbo+C
http://edn.embarcadero.com/article/41337
http://edn.embarcadero.com/article/41337
http://edn.embarcadero.com/article/20841
http://edn.embarcadero.com/article/20841
http://edn.embarcadero.com/article/21751
http://edn.embarcadero.com/article/21751
https://web.archive.org/web/20080516014021/http://community.borland.com/museum/
http://www.turboexplorer.com/
http://dn.codegear.com/article/21751
http://cc.embarcadero.com/item/25636
http://www.computermuseum-muenchen.de/
http://www.computermuseum-muenchen.de/
http://www.computermuseum-muenchen.de/

Chapter 6

cc65

cc65 is a complete cross development package for 65(C)02
systems, including a powerful macro assembler, a C
compiler, linker, librarian and several other tools.
It is based on a C compiler that was originally adapted for
the Atari 8-bit computers by John R. Dunning. The original
C compiler is a Small C descendant but has several exten-
sions, and some of the limits of the original Small C com-
piler are gone.
The toolkit has largely been expanded by Ullrich von Basse-
witz and other contributors. The actual cc65 compiler, a
complete set of binary tools (assembler, linker, etc.) and
runtime library are under a license identical to zlib’s.[1] The
ca65 cross-assembler is one of the most powerful 6502
cross-assemblers available under an open-source license.
The compiler itself is almost completely ANSI C compati-
ble, though not completely. The C library is quite extensive,
and allows extensive usage of the target platform’s hard-
ware. stdio is supported on many platforms, as is Borland-
style conio.h screen handling. GEOS is also supported
on the Commodore 64 and even the Apple II. The library
supports many of the Commodore platforms (C64, C128,
C16/116/Plus/4, P500 and 600/700 family), Apple II fam-
ily, Atari 8-bit family, Oric Atmos, Nintendo Entertainment
System, Watara Supervision game console and Ohio Scien-
tific Challenger 1P.[2]

The officially supported host systems include Linux,
Microsoft Windows, DOS and OS/2, but the source code
itself is quite portable and has been reported to work almost
unmodified on many platforms beside these.

6.1 Supported API

6.1.1 static

• conio (text-based console I/O non-scrolling)

• dio (block-oriented disk I/O bypassing the file system)

6.1.2 dynamic

• em (expanded memory, used for all kinds of memory
beyond the 6502’s 64K barrier, similar EMS)

• joystick (relative input devices)

• mouse (absolute input devices)

• serial (communication)

• tgi (2D graphics primitives inspired by BGI)

Note: For static libraries, “Yes” means the feature is avail-
able. For dynamic libraries, the columns list the number of
available drivers.

[1] https://github.com/cc65/cc65/commit/
aeb849257277a6b98542de8579697b81c6dd70e6

[2] http://cc65.github.io/doc/osi.html

[3] By Fatih Aygün. CIRCLE doesn’t work at all, some graphics
modes may crash on some machines.

6.2 External links
• Official website (no longer maintained)

• Modern github fork of cc65

• Contiki desktop, written with cc65

• TGI drivers for atari8

• Atari TGI 2009-11-02 release announcement on cc65
mailing list

• Android host

10

https://en.wikipedia.org/wiki/MOS_Technology_6502
https://en.wikipedia.org/wiki/Assembly_language#Assembler
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/Linker_(computing)
https://en.wikipedia.org/wiki/Tool#Mental_tools
https://en.wikipedia.org/wiki/Atari_8-bit_family
https://en.wikipedia.org/wiki/Small_C
https://en.wikipedia.org/wiki/Zlib
https://en.wikipedia.org/wiki/ANSI_C
https://en.wikipedia.org/wiki/Stdio.h
https://en.wikipedia.org/wiki/Borland
https://en.wikipedia.org/wiki/Conio.h
https://en.wikipedia.org/wiki/GEOS_(8-bit_operating_system)
https://en.wikipedia.org/wiki/Commodore_64
https://en.wikipedia.org/wiki/Apple_II
https://en.wikipedia.org/wiki/Commodore_64
https://en.wikipedia.org/wiki/Commodore_128
https://en.wikipedia.org/wiki/Commodore_16
https://en.wikipedia.org/wiki/Commodore_Plus/4
https://en.wikipedia.org/wiki/Commodore_CBM-II
https://en.wikipedia.org/wiki/Apple_II_series
https://en.wikipedia.org/wiki/Apple_II_series
https://en.wikipedia.org/wiki/Atari_8-bit_family
https://en.wikipedia.org/wiki/Oric#Oric_Atmos
https://en.wikipedia.org/wiki/Nintendo_Entertainment_System
https://en.wikipedia.org/wiki/Nintendo_Entertainment_System
https://en.wikipedia.org/wiki/Watara_Supervision
https://en.wikipedia.org/wiki/Ohio_Scientific
https://en.wikipedia.org/wiki/Ohio_Scientific
https://en.wikipedia.org/wiki/Linux
https://en.wikipedia.org/wiki/Microsoft_Windows
https://en.wikipedia.org/wiki/DOS
https://en.wikipedia.org/wiki/OS/2
https://en.wikipedia.org/wiki/Expanded_memory
https://en.wikipedia.org/wiki/Borland_Graphics_Interface
https://github.com/cc65/cc65/commit/aeb849257277a6b98542de8579697b81c6dd70e6
https://github.com/cc65/cc65/commit/aeb849257277a6b98542de8579697b81c6dd70e6
http://cc65.github.io/doc/osi.html
http://www.cc65.org/
http://cc65.github.io/cc65/
http://contiki.cbm8bit.com/
http://atari.isgreat.org/
http://www.cc65.org/mailarchive/2009-11/7459.html
http://www.cc65.org/mailarchive/2009-11/7459.html
https://github.com/efornara/jbit/wiki/Android

Chapter 7

ccache

ccache is a software development tool that caches the output
of C/C++ compilation so that the next time, the same com-
pilation can be avoided and the results can be taken from
the cache. This can greatly speed up recompiling time. The
detection is done by hashing different kinds of information
that should be unique for the compilation and then using the
hash sum to identify the cached output. Ccache is licensed
under the GNU General Public License.

7.1 See also
• distcc

7.2 References

7.3 External links
• Official website

11

https://en.wikipedia.org/wiki/Software_development
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/C++
https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/Fingerprint_(computing)
https://en.wikipedia.org/wiki/GNU_General_Public_License
https://en.wikipedia.org/wiki/Distcc
https://ccache.samba.org/

Chapter 8

CFLAGS

CFLAGS and CXXFLAGS are either the name of
environment variables or of Makefile variables that can be
set to specify additional switches to be passed to a compiler
in the process of building computer software.
These variables are usually set inside a Makefile and are
then appended to the command line when the compiler is
invoked. If they are not specified in the Makefile, then
they will be read from the environment, if present. Tools
like autoconf’s ./configure script will usually pick them up
from the environment and write them into the generated
Makefiles. Some package install scripts, like SDL, allow
CFLAGS settings to override their normal settings (instead
of append to them), so setting CFLAGS can cause harm in
this case.
CFLAGS enables the addition of switches for the C com-
piler, while CXXFLAGS is meant to be used when invok-
ing a C++ compiler. Similarly, a variable CPPFLAGS ex-
ists with switches to be passed to the C or C++ preproces-
sor.
These variables are most commonly used to specify
optimization or debugging switches to a compiler, as for ex-
ample -g, -O2 or (GCC-specific) -march=athlon.

8.1 See also
• Compiler optimization

8.2 External links
• GNU optimisation page

• Gentoo Wiki CFLAG guide

• Gentoo Wiki guide to safe CFLAGS

• Linux Review page on optimized gcc compiling

12

https://en.wikipedia.org/wiki/Environment_variable
https://en.wikipedia.org/wiki/Makefile
https://en.wikipedia.org/wiki/Switch_(command_line)
https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/Computer_software
https://en.wikipedia.org/wiki/Autoconf
https://en.wikipedia.org/wiki/C_programming_language
https://en.wikipedia.org/wiki/C++
https://en.wikipedia.org/wiki/C_preprocessor
https://en.wikipedia.org/wiki/C_preprocessor
https://en.wikipedia.org/wiki/Optimization_(computer_science)
https://en.wikipedia.org/wiki/Debugging
https://en.wikipedia.org/wiki/GNU_Compiler_Collection
https://en.wikipedia.org/wiki/Compiler_optimization
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
http://wiki.gentoo.org/wiki/CFLAGS
http://wiki.gentoo.org/wiki/Safe_CFLAGS
http://linuxreviews.org/howtos/compiling/

Chapter 9

Clang

This article is about the Clang compiler. For the phe-
nomenon of rhyming word association, see Clanging.

Clang /ˈklæŋ/[4] is a compiler front end for the pro-
gramming languages C, C++, Objective-C, Objective-C++,
OpenMP,[5] OpenCL, and CUDA. It uses LLVM as its
back end and has been part of the LLVM release cycle since
LLVM 2.6.
It is designed to be able to replace the full GNU Com-
piler Collection (GCC). Its contributors include Apple,
Microsoft, Google, ARM, Sony, Intel and Advanced Micro
Devices (AMD). It is open-source software,[6] with source
code released under the University of Illinois/NCSA Li-
cense, a permissive free software licence.
The Clang project includes the Clang front end and the
Clang static analyzer and several code analysis tools.[7]

9.1 Background

Starting in 2005, Apple made extensive use of LLVM in
a number of commercial systems,[8] including the iPhone
software development kit (SDK) and integrated develop-
ment environment (IDE) Xcode 3.1.
One of the first uses of LLVM was an OpenGL code com-
piler for OS X that converts OpenGL calls into more fun-
damental calls for graphics processing units (GPU) that do
not support certain features. This allowed Apple to sup-
port the entire OpenGL application programming inter-
face (API) on computers using Intel Graphics Media Ac-
celerator (GMA) chipsets, increasing performance on those
machines.[9] For GPUs that support it, the code is compiled
to exploit fully the underlying hardware, but on GMA ma-
chines, LLVM compiles the same OpenGL code into sub-
routines to ensure continued proper function.
LLVM was intended originally to use GCC’s front end, but
GCC turned out to cause some problems for developers of
LLVM and at Apple. The GCC source code is a large and

somewhat cumbersome system for developers to work with;
as one long-time GCC developer put it, “Trying to make the
hippo dance is not really a lot of fun”.[10]

Apple software makes heavy use of Objective-C, but the
Objective-C front-end in GCC is a low priority for GCC
developers. Also, GCC does not fit smoothly into Apple’s
IDE.[11] Finally, GCC is licensed under GNU General Pub-
lic License (GPL) version 3, which requires developers who
distribute extensions for, or modified versions of, GCC to
make their source code available, whereas LLVM has a
BSD-like license[12] which does not force users to release
their source code changes when publishing compiled bina-
ries of those changes.
Apple chose to develop a new compiler front end from
scratch, supporting C, Objective-C and C++.[11] This
“clang” project was open-sourced in July 2007.[13]

9.2 Design

Clang is intended to work atop LLVM.[12] The combina-
tion of Clang and LLVM provides most of the toolchain,
to allow replacing the full GCC stack. Because it is built
with a library-based design, like the rest of LLVM, Clang
is easy to embed into other applications. This is one reason
why most OpenCL implementations are built with Clang
and LLVM.
One of Clang’s main goals is to provide a library-based ar-
chitecture,[14] to allow the compiler to be more tightly tied
to tools that interact with source code, such as an integrated
development environment (IDE) graphical user interface
(GUI). In contrast, GCC is designed to work in a classic
compile-link-debug cycle, and integrating it with other tools
is not always easy. For instance, GCC uses a step called fold
that is key to the overall compile process, which has the side
effect of translating the code tree into a form that looks un-
like the original source code. If an error is found during or
after the fold step, it can be difficult to translate that back
into one location in the original source. Also, vendors us-

13

https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/Clanging
https://en.wikipedia.org/wiki/Help:IPA_for_English
https://en.wikipedia.org/wiki/Compiler
https://en.wikipedia.org/wiki/Front-end_and_back-end
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/C++
https://en.wikipedia.org/wiki/Objective-C
https://en.wikipedia.org/wiki/Objective-C++
https://en.wikipedia.org/wiki/OpenMP
https://en.wikipedia.org/wiki/OpenCL
https://en.wikipedia.org/wiki/CUDA
https://en.wikipedia.org/wiki/LLVM
https://en.wikipedia.org/wiki/Front_and_back_ends
https://en.wikipedia.org/wiki/GNU_Compiler_Collection
https://en.wikipedia.org/wiki/GNU_Compiler_Collection
https://en.wikipedia.org/wiki/Apple_Inc.
https://en.wikipedia.org/wiki/Microsoft
https://en.wikipedia.org/wiki/Google_Inc.
https://en.wikipedia.org/wiki/ARM_Holdings
https://en.wikipedia.org/wiki/Sony
https://en.wikipedia.org/wiki/Intel
https://en.wikipedia.org/wiki/Advanced_Micro_Devices
https://en.wikipedia.org/wiki/Advanced_Micro_Devices
https://en.wikipedia.org/wiki/Open-source_software
https://en.wikipedia.org/wiki/University_of_Illinois/NCSA_Open_Source_License
https://en.wikipedia.org/wiki/University_of_Illinois/NCSA_Open_Source_License
https://en.wikipedia.org/wiki/Permissive_free_software_licence
https://en.wikipedia.org/wiki/Front_and_back_ends
https://en.wikipedia.org/wiki/Static_program_analysis
https://en.wikipedia.org/wiki/IOS_SDK
https://en.wikipedia.org/wiki/IOS_SDK
https://en.wikipedia.org/wiki/Integrated_development_environment
https://en.wikipedia.org/wiki/Integrated_development_environment
https://en.wikipedia.org/wiki/Xcode
https://en.wikipedia.org/wiki/OpenGL
https://en.wikipedia.org/wiki/OS_X
https://en.wikipedia.org/wiki/Graphics_processing_unit
https://en.wikipedia.org/wiki/Application_programming_interface
https://en.wikipedia.org/wiki/Application_programming_interface
https://en.wikipedia.org/wiki/Intel_GMA
https://en.wikipedia.org/wiki/Intel_GMA
https://en.wikipedia.org/wiki/Objective-C
https://en.wikipedia.org/wiki/GNU_General_Public_License#Version_3
https://en.wikipedia.org/wiki/GNU_General_Public_License#Version_3
https://en.wikipedia.org/wiki/Source_code
https://en.wikipedia.org/wiki/BSD_licenses
https://en.wikipedia.org/wiki/C_(programming_language)
https://en.wikipedia.org/wiki/Objective-C
https://en.wikipedia.org/wiki/C++
https://en.wikipedia.org/wiki/OpenCL
https://en.wikipedia.org/wiki/Library-based_architecture
https://en.wikipedia.org/wiki/Library-based_architecture
https://en.wikipedia.org/wiki/Integrated_development_environment
https://en.wikipedia.org/wiki/Integrated_development_environment
https://en.wikipedia.org/wiki/Graphical_user_interface
https://en.wikipedia.org/wiki/Compile-link-debug_cycle

14 CHAPTER 9. CLANG

ing the GCC stack within IDEs use separate tools to index
the code, to provide features like syntax highlighting and
autocomplete.
Clang is designed to retain more information during the
compiling process than GCC, and to preserve the overall
form of the original code. The goal of this is to make it eas-
ier to map errors back into the original source. The error
reports offered by Clang are also aimed to be more detailed
and specific, as well as machine-readable, so IDEs can in-
dex the output of the compiler during compiling. Modular
design of the compiler can offer source code indexing, syn-
tax checking, and other features normally associated with
rapid application development systems. The parse tree is
also more suitable for supporting automated code refactor-
ing, as it directly represents the original source code.
Clang is a compiler for only C-like languages, including C,
C++, Objective-C, Objective-C++, OpenCL, and CUDA.
For other languages, including Java, Fortran, and Ada,
LLVM remains dependent on GCC or another compiler
frontend. In many cases, Clang can be used or swapped out
for GCC as needed, with no other effects on the toolchain
as a whole. It supports most of the commonly used GCC
options.

9.3 Performance and GCC compati-
bility

Clang is designed to be highly compatible with GCC.[15]
Clang’s command-line interface is similar to and shares
many flags and options with GCC. Clang implements many
GNU language extensions and enables them by default.
Clang implements many GCC compiler intrinsics purely
for compatibility. For example, even though Clang imple-
ments atomic intrinsics which correspond exactly with C11
atomics, it also implements GCC’s __sync_* intrinsics for
compatibility with GCC and libstdc++. Clang also main-
tains ABI compatibility with GCC-generated object code.
In practice Clang can often be used as a drop-in replace-
ment for GCC.
Clang’s developers aim to reduce memory footprint and
increase compilation speed compared to competing com-
pilers, such as GCC. In October 2007, they report that
Clang compiled the Carbon libraries well over twice as fast
as GCC, while using about one-sixth GCC’s memory and
disk space.[16] However, as of 2011 this was not a typical
result.[17][18] As of mid-2014, Clang won more than a third
of the benchmarks, with GCC winning most.[19]

While there are still a few tests where performance of a
Clang-compiled program lags behind performance of the
GCC-compiled program, by large factors (up to 5.5x),[19]

it has been reported that Clang “continues to be under very
active development,” and a hope was expressed for further
improvement.[17]

9.4 Status history

This table presents only significant steps and releases in
Clang history.

9.5 See also

• LLDB

• Portable C Compiler

• source code indexing

9.6 References
[1] http://www.llvm.org/releases/2.1/docs/ReleaseNotes.html

[2] http://llvm.org/releases/

[3] LLVM License, retrieved 2014-07-24

[4] Christopher, Eric (3 July 2008). “simply wonder pronunci-
ation of Clang”. LLVMdev (Mailing list). Retrieved 2015-
09-22.

[5] “OpenMP Support”. LLVM Project Blog. Retrieved 28
March 2016.

[6] Clang “Getting started” instructions, Clang.llvm.org, retrieved
2012-09-18

[7] “Clang Static Analyzer”. LLVM. Retrieved 3 September
2009.

[8] Treat, Adam (19 February 2005). “mkspecs and patches
for LLVM compile of Qt4”. Qt4-preview-feedback (Mail-
ing list).

[9] Lattner, Chris (25 May 2007). LLVM for OpenGL and other
stuff (Slides). LLVM Developers’ Meeting.

[10] Zadeck, Kenneth (19 November 2005). “Re: LLVM/GCC
Integration Proposal”. GCC development (Mailing list).

[11] Naroff, Steve (25 May 2007). New LLVM C Front-end
(Slides). LLVM Developers’ Meeting.

[12] Clang team, clang: a C language family frontend for LLVM

[13] Lattner, Chris (11 July 2007). “New LLVM C front-end:
“clang””. cfe-dev (Mailing list). Archived from the original
on 2015-03-25.

https://en.wikipedia.org/wiki/Syntax_highlighting
https://en.wikipedia.org/wiki/Autocomplete
https://en.wikipedia.org/wiki/Source_code
https://en.wikipedia.org/wiki/Index_(search_engine)
https://en.wikipedia.org/wiki/Rapid_application_development
https://en.wikipedia.org/wiki/Parse_tree
https://en.wikipedia.org/wiki/Code_refactoring
https://en.wikipedia.org/wiki/Code_refactoring
https://en.wikipedia.org/wiki/Java_(programming_language)
https://en.wikipedia.org/wiki/Fortran
https://en.wikipedia.org/wiki/Ada_(programming_language)
https://en.wikipedia.org/wiki/Application_binary_interface
https://en.wikipedia.org/wiki/Carbon_(API)
https://en.wikipedia.org/wiki/LLDB_(debugger)
https://en.wikipedia.org/wiki/Portable_C_Compiler
https://en.wikipedia.org/wiki/Source_code_indexing
http://www.llvm.org/releases/2.1/docs/ReleaseNotes.html
http://llvm.org/releases/
http://llvm.org/releases/3.4.2/LICENSE.TXT
http://lists.llvm.org/pipermail/llvm-dev/2008-July/015629.html
http://lists.llvm.org/pipermail/llvm-dev/2008-July/015629.html
http://blog.llvm.org/2015/05/openmp-support_22.html
http://clang.llvm.org/get_involved.html
http://clang-analyzer.llvm.org/
http://lists.trolltech.com/qt4-preview-feedback/2005-02/msg00691.html
http://lists.trolltech.com/qt4-preview-feedback/2005-02/msg00691.html

http://llvm.org/devmtg/2007-05/10-Lattner-OpenGL.pdf


http://llvm.org/devmtg/2007-05/10-Lattner-OpenGL.pdf


http://llvm.org/devmtg/2007-05/
https://gcc.gnu.org/ml/gcc/2005-11/msg00918.html
https://gcc.gnu.org/ml/gcc/2005-11/msg00918.html

http://llvm.org/devmtg/2007-05/09-Naroff-CFE.pdf


http://llvm.org/devmtg/2007-05/
http://clang.llvm.org/
https://web.archive.org/web/20150325151730/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-July/000000.html
https://web.archive.org/web/20150325151730/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-July/000000.html
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2007-July/000000.html

9.7. EXTERNAL LINKS 15

[14] Clang: Utility and Applications: Library Based Architecture

[15] Clang – Features and Goals: GCC Compatibility, 15 April
2013

[16] Clang – Features and Goals: Fast compiles and Low Memory
Use, October 2007

[17] Simonis, Volker (10 February 2011). “Compiling the
HotSpot VM with Clang”. Archived from the original on
18 February 2011. Retrieved 13 February 2011. While the
overall GCC compatibility is excellent and the compile times
are impressive, the performance of the generated code is still
lacking behind a recent GCC version.

[18] “Benchmarking LLVM & Clang Against GCC 4.5”.
Phoronix. 21 April 2010. Retrieved 13 February 2011. Bi-
naries from LLVM-GCC and Clang both struggled to compete
with GCC 4.5.0 in the timed HMMer benchmark of a Pfam
database search. LLVM-GCC and Clang were about 23%
slower(…)Though LLVM / Clang isn’t the performance cham-
pion at this point, both components continue to be under very
active development and there will hopefully be more news to
report in the coming months

[19] “GCC 4.9 VS. LLVM Clang 3.5 Linux Compiler Bench-
marks”. OpenBenchmarking.org. 14 April 2014. Retrieved
25 June 2014.

[20] Divacky, Roman. “[Announce] clang/llvm can compile
booting FreeBSD kernel on i386/amd64”.

[21] Building FreeBSD with Clang, Wiki.freebsd.org, 2012-08-
24, retrieved 2012-09-18

[22] Hornung, Alex. “llvm/clang once more”.

[23] Clang, DragonFly BSD, retrieved 2012-09-18

[24] “Clang can compile LLVM and Clang”. LLVM Project
Blog.

[25] “Clang Successfully Self-Hosts”. LLVM Project Blog.

[26] “HelenOS mainline changeset head,294”.

[27] Gregor, Doug. “Clang++ Builds Boost!”. LLVM Project
Blog.

[28] Davis, Brad. “FreeBSD Status Reports April – June, 2010”.

[29] Clang builds a working Linux Kernel (Boots to RL5 with SMP,
networking and X, self hosts), Lists.cs.uiuc.edu, retrieved
2012-09-18

[30] Gregor, Douglas (26 January 2011). “New C++0x feature
support in Clang” (Mailing list). Archived from the original
on 30 January 2011. Retrieved 29 January 2011.

[31] “C++ and C++’0x Support in Clang”. LLVM.

[32] Sonnenberger, Jörg (2012-01-19). “Status of NetBSD and
LLVM”. Retrieved 2014-02-26.

[33] Ledru, Sylvestre. “Rebuild of the Debian archive with
clang”.

[34] “Official Minix 3 website: News”.

[35] Gerzo, Daniel (12 May 2012). “FreeBSD Quarterly Status
Report January-March, 2012” (Mailing list). Retrieved 14
May 2012.

[36] Davis, Brooks (5 November 2012). “Heads Up: Clang now
the default on x86” (Mailing list). Retrieved 7 November
2012.

[37] Webster, Behan (18 February 2013). “LLVMLinux: Com-
piling Android with LLVM” (PDF). Retrieved 11 May
2013.

[38] Tinti, Vinicius (17 March 2013). “LLVMLinux: Nexus 7”.
Retrieved 11 May 2013.

[39] Du Toit, Stefanus. “Clang is C++11 feature complete as of
*just now*!”.

[40] “[llvm-project] Revision 194194”.

[41] Ledru, Sylvestre. “Rebuild of Debian using Clang 3.5.0”.

9.7 External links
• Official website

• LLVMdev: New LLVM C front-end: “clang”, an-
nouncement (11 July 2007)

• Presentation: Ted Kremenek – Finding Bugs with the
Clang Static Analyzer, Slides

• Presentation: Steve Naroff – Clang Internals, Slides

• 2009 DevMtg Clang presentation

http://clang.llvm.org/features.html#libraryarch
http://clang.llvm.org/features.html#gcccompat
http://clang.llvm.org/features.html
http://clang.llvm.org/features.html
https://web.archive.org/web/20110218013535/http://weblogs.java.net/blog/simonis/archive/2011/02/10/compiling-hotspot-vm-clang
https://web.archive.org/web/20110218013535/http://weblogs.java.net/blog/simonis/archive/2011/02/10/compiling-hotspot-vm-clang
http://weblogs.java.net/blog/simonis/archive/2011/02/10/compiling-hotspot-vm-clang
https://www.phoronix.com/scan.php?page=article&item=gcc_llvm_clang&num=6
https://en.wikipedia.org/wiki/Phoronix
http://openbenchmarking.org/result/1404144-KH-CLANG359076
http://openbenchmarking.org/result/1404144-KH-CLANG359076
http://lists.freebsd.org/pipermail/freebsd-current/2009-February/003743.html
http://lists.freebsd.org/pipermail/freebsd-current/2009-February/003743.html
http://wiki.freebsd.org/BuildingFreeBSDWithClang
http://leaf.dragonflybsd.org/mailarchive/kernel/2009-03/msg00067.html
http://www.dragonflybsd.org/docs/developer/clang/
http://blog.llvm.org/2009/12/clang-builds-llvm.html
http://blog.llvm.org/2010/02/clang-successfully-self-hosts.html
http://trac.helenos.org/trac.fcgi/changeset/mainline%252C294
http://blog.llvm.org/2010/05/clang-builds-boost.html
http://www.freebsd.org/news/status/report-2010-04-2010-06.html#Clang-Replacing-GCC-in-the-Base-System
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html
https://web.archive.org/web/20110130065354/http://lists.cs.uiuc.edu:80/pipermail/cfe-dev/2011-January/013013.html
https://web.archive.org/web/20110130065354/http://lists.cs.uiuc.edu:80/pipermail/cfe-dev/2011-January/013013.html
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-January/013013.html
http://clang.llvm.org/cxx_status.html
http://www.sonnenberger.org/2012/01/19/status-netbsd-and-llvm/
http://www.sonnenberger.org/2012/01/19/status-netbsd-and-llvm/
http://sylvestre.ledru.info/blog/2012/02/29/rebuild_of_the_debian_archive_with_clang
http://sylvestre.ledru.info/blog/2012/02/29/rebuild_of_the_debian_archive_with_clang
http://www.minix3.org/news/
http://lists.freebsd.org/pipermail/freebsd-stable/2012-May/067486.html
http://lists.freebsd.org/pipermail/freebsd-stable/2012-May/067486.html
http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037610.html
http://lists.freebsd.org/pipermail/freebsd-current/2012-November/037610.html

http://events.linuxfoundation.org/images/stories/slides/abs2013_webster.pdf


http://events.linuxfoundation.org/images/stories/slides/abs2013_webster.pdf


http://llvm.linuxfoundation.org/index.php/Nexus_7


http://llvm.org/viewvc/llvm-project?view=revision&revision=194194
http://sylvestre.ledru.info/blog/2014/09/11/rebuild-of-debian-using-clang-3-5
http://clang.llvm.org/
http://lists.cs.uiuc.edu/pipermail/llvmdev/2007-July/009817.html

Posted in Uncategorized

Leave a Reply

Your email address will not be published. Required fields are marked *