History

update

bellard committed 25 years ago

Commit eb0e3e71 parent 605a0286 files · +210 −80Browse files

Showing the changes to README (1 of 6 files). Show all

Unified · Split

README+111−31
@@ -1,49 +1,129 @@
1−Tiny C Compiler - Make the best x86 Linux C compiler in less than 8192 bytes.
2−-----------------------------------------------------------------------------
1+Tiny C Compiler - C Scripting Everywhere - The Smallest ANSI C compiler
2+-----------------------------------------------------------------------
33
4−Differences with ANSI C:
5−-----------------------
4+Features:
5+--------
66
7−- Preprocessor: only '#define xx yy' is supported. Recursive defined
8− supported. All other directives are not supported.
7+- SMALL! You can compile and execute C code everywhere, for example on
8+ rescue disks.
99
10−- Types: int, char, void, pointers and functions are
11− supported. Function pointers are also supported. struct, union and
12− typedef not supported.
10+- FAST! tcc generates optimized x86 code. No byte code overhead.
1311
14−- Operations: 'x=' not supported.
12+- UNLIMITED! Any C dynamic library can be used directly. TCC is
13+ heading torwards full ANSI C compliance. TCC can of course compile
14+ itself.
1515
16−- Keywords: the following keywords are supported: int void char if
17− else while break return for.
16+- Compile and execute C source directly. No linking or assembly
17+ necessary. Full C preprocessor included.
1818
19−- Symbol scope: local variables supported, but they cannot have the
20− same name as global variables.
19+- C script supported : just add '#!/usr/local/bin/tcc' at the first
20+ line of your C source, and execute it directly from the command line !
2121
22−Features:
23−--------
22+- For adventurers, tcc is conceived to be able to generate code for
23+ other targets.
2424
25−- SMALL! You can compile and execute C code everywhere, for example on
26− rescue disks.
25+Documentation:
26+-------------
27+
28+1) Installation
29+
30+***TCC currently only work on Linux x86***.
31+
32+Type 'make install' to compile and install tcc in /usr/local and
33+/usr/local/lib/tcc.
34+
35+2) Introduction
36+
37+We assume here that you know ANSI C. Look at the example ex1.c to know
38+what the programs look like.
39+
40+The main limitations of tcc are that you cannot use floats.
41+
42+The include file <tcclib.h> can be used if you want a small basic libc
43+include support (especially useful for floppy disks). Of course, you
44+can also use standard headers, although they are slower to compile.
45+
46+You can begin your C script with '#!/usr/local/bin/tcc' on the first
47+line and set its execute bits (chmod a+x your_script). Then, you can
48+launch the C code as a shell or perl script :-) The command line
49+arguments are put in 'argc' and 'argv' of the main functions, as in
50+ANSI C.
51+
52+3) Invokation
53+
54+'-Idir' : specify an additionnal include path. The
55+default ones are: /usr/include, /usr/lib/tcc, /usr/local/lib/tcc.
56+
57+'-Dsym' : define preprocessor symbol 'sym' to 1.
58+
59+'-lxxx' : dynamically link your program with library
60+libxxx.so. Standard library paths are checked, including those
61+specificed with LD_LIBRARY_PATH.
62+
63+Only one source code can be compiled. If you have multiple source
64+files, add one which includes all your sources.
65+
66+4) Examples
67+
68+ex1.c: simplest example (hello world). Can also be launched directly
69+as a script: ./ex2.c.
70+
71+ex2.c: more complicated example: find a number with the four
72+operations given a list of numbers (benchmark).
73+
74+ex3.c: compute fibonacci numbers (benchmark).
75+
76+ex4.c: more complicated: X11 program. Very complicated test in fact
77+because standard headers are being used ! Currently slow because
78+parsing does not use hash tables.
79+
80+ex5.c: 'hello world' with standard glibc headers.
81+
82+tcc.c: TCC can compile itself. Used to check the code generator.
83+
84+prog.c: auto test for TCC which tests many subtle possible bugs. Used
85+when doing 'make test'.
86+
87+Exact differences with ANSI C:
88+-----------------------------
89+
90+1) Preprocessor
91+
92+ - the preprocessor tokens are the same as C. It means that in some
93+ rare cases, preprocessed numbers are not handled exactly as in ANSI
94+ C. This approach has the advantage of being simpler and FAST!
95+
96+ - __LINE__, __FILE__, __DATE__, __TIME__ are currently not handled.
97+
98+ - #line not handled
99+
100+2) C language
101+
102+- Parsing: variables cannot be initialized ('int a = 1' or 'int tab[2] =
103+ {1, 2}' not supported).
104+
105+- Cannot pass struct/union as value. Cannot assign struct/union (use
106+ memcpy instead).
27107
28−- FAST! tcc generate x86 code. No byte code overhead.
108+- Types: floating point numbers are not supported.
29109
30−- Compile and execute C source directly. No linking necessary.
110+- (BUG) 'char' and 'short' casts do not truncate correctly.
31111
32−- C script supported : just add '#!/usr/bin/tcc' at the first line of
33− your C source, and execute it directly from the command line !
112+- 'sizeof' may not work if too complex expression is given.
34113
35−- All C library functions can be used via dynamic linking.
114+Supported C extensions:
115+----------------------
36116
37−-------------------------------------------------------------------------
38−An even smaller compiler can be build from tcc by activating the
39−define 'TINY'. The following changes from tcc:
117+- 'inline' keyword is ignored.
40118
41−- Comments are not supported.
42119
43−- Parsing: No char constants. No '\r' and '\t' in strings. Only base
44− 10 numbers are supported.
120+License:
121+-------
45122
46−- no 'for' loops.
123+TCC is distributed under the GNU Generic Public License (see COPYING
124+file).
47125
48−- Operations: '?:', ',', 'x=', shifts, '&&', '||', '!', '~' not supported.
126+I accept only patches where you give your copyright explictely to me
127+to simplify licensing issues.
49128
129+Fabrice Bellard - Nov 11, 2001.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t