Mercurial > hg > qcc
changeset 515:c8b57d883e02
Update web page.
author | Rob Landley <rob@landley.net> |
---|---|
date | Wed, 21 Nov 2007 14:28:46 -0600 |
parents | 803a420a9e04 |
children | c3122e5db591 |
files | www/differences.html www/footer.html www/header.html www/index.html www/old-news.html |
diffstat | 5 files changed, 132 insertions(+), 60 deletions(-) [+] |
line wrap: on
line diff
--- a/www/differences.html Thu Nov 15 16:13:42 2007 -0600 +++ b/www/differences.html Wed Nov 21 14:28:46 2007 -0600 @@ -1,56 +1,57 @@ -<html> -<title>Differences between tcc and gcc</title> -<body> +<!--#include file="header.html" --> -<p>Some differences stem from tcc being unfinished. Others are inherent +<h1>Differences between tinycc and gcc</h1> + +<p>Some differences stem from tinycc being unfinished. Others are inherent in the wildly different compiler implementations.</p> <hr> -<p>TCC is a simple translator, converting C source into the equivalent object -code. The main goals of tcc are:</p> +<p>Tinycc is a simple translator, converting C source into the equivalent object +code. The main goals of tinycc are:</p> <ul> <li>Speed of compilation.</li> <li>Simplicity of implementation</li> -<li>Correct implementation of <a href=http://web.archive.org/web/20050207010641/http://dev.unicals.com/papers/c99-draft.html>the C99 specification</a> (plus any compiler extensions required to compile an unmodified Linux Kernel)</li> +<li>Correctly compiling existing Linux programs (including features from the <a href=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf>the C99 standard</a> and any compiler extensions required to compile an unmodified Linux Kernel)</li> </ul> -<p>The third goal remains a work in progress.</p> +<p>All three goals need improvement.</p> <p>Note that optimized output is _not_ one of these goals. As a simple -translator, TCC does not optimize the resulting binaries much. TCC's output is -generally about twice the size of what a compiler like icc or gcc would -produce. We have some simple optimizations like constant propogation, +translator, Tinycc does not optimize the resulting binaries much. Tinycc's +output is generally about twice the size of what a compiler like icc or gcc +would produce. We have some simple optimizations like constant propogation, and hope to add dead code elimination, but there's no "intermediate format" allowing major rearrangements of the code.</p> -<p>If somebody wanted to implement an optimizer for tcc, we'd be happy to take -it as long as it was cleanly separated from the rest of the code. However, if -you want a big and complicated compiler, there are plenty out there already.</p> +<p>If somebody wanted to implement an optimizer for tinycc, we'd be happy to +take it as long as it was cleanly separated from the rest of the code. However, +if you want a big and complicated compiler, there are plenty out there +already.</p> <hr> -<p>TCC is a single self-contained program. It does not use an external linker, -but produces ELF files directly from C source and ELF file inputs such as -shared libraries.</p> +<p>Tinycc is a single self-contained program. It does not use an external +linker, but produces ELF files directly from C source and ELF file inputs such +as shared libraries.</p> -<p>In theory, four packages (uClibc, tcc, busybox, and the Linux kernel) +<p>In theory, four packages (uClibc, tinycc, busybox, and the Linux kernel) could provide a complete self-bootstrapping development environment. (In -practice, we're still working on tcc.)</p> +practice, we're still working our way towards that.)</p> <p>Piotr Skamruk points out that if you want assembly output, you can use objdump, ala:</p> <pre> - tcc -c somefile.c + tinycc -c somefile.c objdump -dtsr somefile.o </pre> <hr> <p>Function argument evaluation order is explicitly undefined (c99 spec -section 3.19 #2). TCC evaluates function arguments first to last. Some +section 3.19 #2). Tinycc evaluates function arguments first to last. Some compilers (like gcc) evaluate function arguments last to first.</p> -<p>The following program would produce different output in tcc and gcc:</p> +<p>The following program would produce different output in tinycc and gcc:</p> <pre> #include <stdio.h> @@ -70,10 +71,9 @@ </pre> </hr> <hr> -<p>TCC's error checking isn't as elaborate as some compilers. Try a project +<p>Tinycc's error checking isn't as elaborate as some compilers. Try a project like <a href=http://www.splint.org/>splint</a> or <a href=http://www.kernel.org/pub/software/devel/sparse/>sparse</a> if you want lots of warnings.</p> </hr> -</body> -</html> +<!--#include file="footer.html" -->
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/footer.html Wed Nov 21 14:28:46 2007 -0600 @@ -0,0 +1,7 @@ +</td></tr></table> +<hr /> +<table width="100%"> +<tr><td>Copyright 2007 Rob Landley <rob@landley.net></td></tr> +</table> +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/header.html Wed Nov 21 14:28:46 2007 -0600 @@ -0,0 +1,34 @@ +<html> +<head> +<title>Tiny C Compiler</title> +</head> +<body> +<table border=0 cellpadding=0 cellspacing=0> +<tr><td> + <table border=0 cellspacing=1 cellpadding=4> + <tr><td><h1>tinycc</h1></td></tr> + </table> +</td></tr> + +<tr><td valign=top> + <b>About</b> + <ul> + <li><a href="index.html">News</a></li> + <li><a href="/hg/tinycc/raw-file/tip/README">README</a></li> + <li><a href="differences.html">Differences</a></li> + </ul> + <b>Download</b> + <ul> + <li><a href="/hg/tinycc">Mercurial Repository</a></li> + <li><a href="downloads">Release Tarballs</a></li> + </ul> + <b>Development</b> + <ul> + <li><a href="/notes.html">Maintainer's blog</a></li> + <li><a href="/mailman/listinfo/tinycc">Mailing List</a></li> + <li>irc: #firmware on freenode</li> + </ul> +</td> + +<td valign=top> +
--- a/www/index.html Thu Nov 15 16:13:42 2007 -0600 +++ b/www/index.html Wed Nov 21 14:28:46 2007 -0600 @@ -1,4 +1,6 @@ -<title>Rob's TCC fork</title> +<!--#include file="header.html" --> + +<title>Tiny C Compiler</title> <h2><b>News</b></h2> <h2><b>November 14, 2007</b></h2> @@ -15,7 +17,7 @@ info, see the mailing list.</p> <h2><b>October 27, 2007</b></h2> -<p>De-abandoned project. Ok, I've been working on this darn unofficial fork +<p>Started new project. Ok, I've been working on this darn unofficial fork on and off for a year, and it's time to decide if I'm doing it or not. I'm doing it.</p> @@ -31,42 +33,24 @@ <p>There's still a _lot_ of work left to be done, but that's just a matter of doing it.</p> -<h2><b>October 4, 2007</b></h2> -<p>Abandoned project. (See <a href=/notes-2007.html#04-10-2007>blog</a>.)</p> - -<h2><b>August 18, 2007</b></h2> -<p>Started work on a <a href=differences.html>list of -differences between tcc and gcc</a>. It's about time to start thinking of -another release...</p> - -<h2><b>May 10, 2007</b></h2> -<p>Added a <a href=bugs>bugs directory</a> containing little -C files that each demonstrate an unfixed bug in tcc.</p> - -<h2><b>April 29, 2007</b></h2> -<p>Ok, I put out <a href=downloads>a release</a>. It works -for me. It's <a href=http://landley.net/hg/tinycc?cl=431>mercurial -changeset 431</a>.</p> +<a href=old-news.html>Click here for older news.</a> <hr> <h2><b>About</b></h2> -<p>This is a rampantly unofficial fork of <a href=http://fabrice.bellard.free.fr/tcc>Fabrice Bellard's Tiny C Compiler</a>. -These days Fabrice's attention is taken up by <a href=http://qemu.org>QEMU</a>, -and the original TCC project is stalled.</a> - -<p><a href=http://lists.gnu.org/archive/html/tinycc-devel/2006-09/msg00024.html>Fabrice put out a request for a new maintainer in 2006</a>, but -he insisted that the project continue using the obsolete CVS repository format, -and stay hosted on Savannah. This didn't interest me, but tcc itself does, -my <a href=/hg/tinycc>mercurial repository</a> is public, and I take patches.</p> +<p>This is a small, simple, and fast single pass C compiler. It produces +executable code directly from C source, with no intermediate steps. It +understands almost all of the C99 standard, plus several extensions from +gcc.</p> -<p>What discussion there is still takes place on -<a href=http://lists.nongnu.org/mailman/listinfo/tinycc-devel>the old tcc -list</a>. In addition, I hang out on #firmware on freenode, and my bouts of -fiddling with tcc are documented in <a href=/notes.html>my development -blog</a>.</p> +<p>Tinycc can produce ELF executables (and .o files, and shared libraries) +for x86, arm, and c67 processors. It can also run C code directly, as +a scripting language, via the "#!/usr/bin/tinycc -run" construct.</p> -<p>Someday, I'd like to get <a href=/code/firmware>Firmware Linux</a> -down to just four packages: linux, uClibc, toybox, and tinycc. This means -tinycc has to be able to build the other three, and there's work to be done -there...</p> +<p>Tinycc already builds a working version of itself. The current goal is +to implement enough features to build an unmodified Linux kernel, +uClibc, and BusyBox (or toybox) to create a small self-bootstrapping +Linux system in only four packages. (See the <a href=/code/firmware>Firmware +Linux</a> project for details.)</p> + +<!--#include file="footer.html" -->
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/www/old-news.html Wed Nov 21 14:28:46 2007 -0600 @@ -0,0 +1,47 @@ +<!--#include file="header.html" --> + +<b>The following entries apply to my unofficial fork of +<a href=http://fabrice.bellard.free.fr/tcc/>Fabrice Bellard's tcc</a> +project. This page is here for historical purposes.</b> + +<h2><b>October 4, 2007</b></h2> +<p>Abandoned project. (See <a href=/notes-2007.html#04-10-2007>blog</a>.)</p> + +<h2><b>August 18, 2007</b></h2> +<p>Started work on a <a href=differences.html>list of +differences between tcc and gcc</a>. It's about time to start thinking of +another release...</p> + +<h2><b>May 10, 2007</b></h2> +<p>Added a <a href=bugs>bugs directory</a> containing little +C files that each demonstrate an unfixed bug in tcc.</p> + +<h2><b>April 29, 2007</b></h2> +<p>Ok, I put out <a href=downloads>a release</a>. It works +for me. It's <a href=http://landley.net/hg/tinycc?cl=431>mercurial +changeset 431</a>.</p> + +<hr> +<h2><b>About</b></h2> + +<p>This is a rampantly unofficial fork of <a href=http://fabrice.bellard.free.fr/tcc>Fabrice Bellard's Tiny C Compiler</a>. +These days Fabrice's attention is taken up by <a href=http://qemu.org>QEMU</a>, +and the original TCC project is stalled.</a> + +<p><a href=http://lists.gnu.org/archive/html/tinycc-devel/2006-09/msg00024.html>Fabrice put out a request for a new maintainer in 2006</a>, but +he insisted that the project continue using the obsolete CVS repository format, +and stay hosted on Savannah. This didn't interest me, but tcc itself does, +my <a href=/hg/tinycc>mercurial repository</a> is public, and I take patches.</p> + +<p>What discussion there is still takes place on +<a href=http://lists.nongnu.org/mailman/listinfo/tinycc-devel>the old tcc +list</a>. In addition, I hang out on #firmware on freenode, and my bouts of +fiddling with tcc are documented in <a href=/notes.html>my development +blog</a>.</p> + +<p>Someday, I'd like to get <a href=/code/firmware>Firmware Linux</a> +down to just four packages: linux, uClibc, toybox, and tinycc. This means +tinycc has to be able to build the other three, and there's work to be done +there...</p> + +<!--#include file="footer.html" -->