Re: transpiling to low level C

Liste des GroupesRevenir à cl c 
Sujet : Re: transpiling to low level C
De : bc (at) *nospam* freeuk.com (bart)
Groupes : comp.lang.c
Date : 16. Dec 2024, 12:46:16
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vjp3u9$1432m$1@dont-email.me>
References : 1 2 3 4 5 6
User-Agent : Mozilla Thunderbird
On 16/12/2024 07:02, BGB wrote:
On 12/15/2024 5:22 PM, Thiago Adams wrote:
Em 12/15/2024 7:22 PM, Lawrence D'Oliveiro escreveu:
On Sun, 15 Dec 2024 07:44:34 -0300, Thiago Adams wrote:
>
I also think LLVM is too big.
>
How about QBE, then <https://c9x.me/compile/>.
>
QBE is just for linux and it does not generate code directly. C is everywhere.
But I am reading QBE docs to see what is necessary in a IL.
>
 I agree that both LLVM and GCC are too big.
I've just been working on a new backend which can be shared between different projects. It can be built into a standalone library, which has a size from 70KB to 180KB (x64 target), depending on output options. (30K of that is my language's std library.)
The 70KB product interprets only. The full one can also generate EXE/DLL/OBJ files, my private MX format, ASM source, IL source (when code has been generated via its API), or it can run programs directly as native code (when not interpreting the IL!).
It's several magnitudes smaller in scale than LLVM, and can be compiled from source in 0.06 seconds:
   c:\px>tm mm6 -opt pcl -dll
   Compiling pcl.m to pcl.dll
   TM: 0.06
   c:\px>dir pcl.dll
   16/12/2024  11:38           175,616 pcl.dll

I am not sure the minimum size of a usable C compiler, my current estimate is probably somewhere in the area of 50-100 kLOC.
 My current compiler is a bit bigger than this, and my own past attempt to implement a C compiler in under 30k lines had failed.
Mine, for quite a large subset (that can compile Lua and sqlite3 for example), is between 180KB and 290KB. That's roughly 20 to 30Kloc, assuming that one line of code maps to approx 10 bytes of x64 code.
The 18KB version is to interpret only; the 290K is 'fully loaded' (see above). But usually my C standard headers are embedded, adding 40KB. (I no longer embed windows.h; that's a massive 600KB.
But, people write all sorts of much smaller C compilers, obviously with some compromises. The smallest I remember is one fitting into a 512-byte boot-loader.

If I were to estimate a feature set for a 3AC IL:
   Basic UNARY and BINARY operators;
     Also COMPARE and similar;
   Load and Store Index operators;
     With support for an immediate index;
   GOTO
   IF-GOTO
   CALL (with a list of argument variables and a target variable).
The IL I mentioned above isn't that small. There are about 150 instructions. Probably half could be dispensed with (eg. 'MIN/MAX' ops, or in-place MUL), but then the functionality needs to be provided by other means. And as I showed, the resulting backend isn't that huge.
It uses a stack-model, and IL code looks ugly. I'd also developed a 3AC IL that looked gorgeous, like a mini-HLL, but that was just too hard to work with, even though such a model is similar to SSA which is very popular.

Date Sujet#  Auteur
15 Dec 24 * transpiling to low level C138Thiago Adams
15 Dec 24 +* Re: transpiling to low level C10Lawrence D'Oliveiro
15 Dec 24 i`* Re: transpiling to low level C9Thiago Adams
15 Dec 24 i `* Re: transpiling to low level C8Lawrence D'Oliveiro
16 Dec 24 i  `* Re: transpiling to low level C7Thiago Adams
16 Dec 24 i   `* Re: transpiling to low level C6BGB
16 Dec 24 i    +- Re: transpiling to low level C1Thiago Adams
16 Dec 24 i    +- Re: transpiling to low level C1bart
16 Dec 24 i    +- Re: transpiling to low level C1Lawrence D'Oliveiro
16 Dec 24 i    `* Re: transpiling to low level C2Keith Thompson
17 Dec 24 i     `- Re: transpiling to low level C1bart
15 Dec 24 +* Re: transpiling to low level C5Chris M. Thomasson
15 Dec 24 i`* Re: transpiling to low level C4Thiago Adams
15 Dec 24 i `* Re: transpiling to low level C3Chris M. Thomasson
16 Feb06:01 i  `* Re: transpiling to low level C2Chris M. Thomasson
16 Feb14:17 i   `- USENET and spam (Was: Re: transpiling to low level C)1Salvador Mirzo
15 Dec 24 +* Re: transpiling to low level C3bart
15 Dec 24 i`* Re: transpiling to low level C2Thiago Adams
15 Dec 24 i `- Re: transpiling to low level C1Thiago Adams
15 Dec 24 +* Re: transpiling to low level C117Bonita Montero
15 Dec 24 i+* Re: transpiling to low level C114bart
16 Dec 24 ii`* Re: transpiling to low level C113BGB
16 Dec 24 ii +- Re: transpiling to low level C1David Brown
16 Dec 24 ii +* Re: transpiling to low level C22Thiago Adams
17 Dec 24 ii i`* Re: transpiling to low level C21BGB
17 Dec 24 ii i `* Re: transpiling to low level C20Thiago Adams
17 Dec 24 ii i  +* Re: transpiling to low level C15Thiago Adams
17 Dec 24 ii i  i`* Re: transpiling to low level C14Thiago Adams
17 Dec 24 ii i  i `* Re: transpiling to low level C13bart
17 Dec 24 ii i  i  `* Re: transpiling to low level C12Thiago Adams
17 Dec 24 ii i  i   `* Re: transpiling to low level C11bart
18 Dec 24 ii i  i    `* Re: transpiling to low level C10BGB
18 Dec 24 ii i  i     `* Re: transpiling to low level C9Thiago Adams
19 Dec 24 ii i  i      `* Re: transpiling to low level C8BGB
19 Dec 24 ii i  i       `* Re: transpiling to low level C7bart
19 Dec 24 ii i  i        `* Re: transpiling to low level C6BGB
19 Dec 24 ii i  i         +* Re: transpiling to low level C3bart
19 Dec 24 ii i  i         i`* Re: transpiling to low level C2BGB
20 Dec 24 ii i  i         i `- Re: transpiling to low level C1BGB
23 Dec 24 ii i  i         `* Re: transpiling to low level C2Lawrence D'Oliveiro
23 Dec 24 ii i  i          `- Re: transpiling to low level C1BGB
17 Dec 24 ii i  `* Re: transpiling to low level C4BGB
17 Dec 24 ii i   +* Re: transpiling to low level C2Thiago Adams
18 Dec 24 ii i   i`- Re: transpiling to low level C1BGB
21 Dec 24 ii i   `- Re: transpiling to low level C1Lawrence D'Oliveiro
16 Dec 24 ii +* Re: transpiling to low level C76Janis Papanagnou
16 Dec 24 ii i+* Re: transpiling to low level C16bart
16 Dec 24 ii ii`* Re: transpiling to low level C15Janis Papanagnou
17 Dec 24 ii ii `* Re: transpiling to low level C14bart
17 Dec 24 ii ii  +* Re: transpiling to low level C12Keith Thompson
17 Dec 24 ii ii  i+- Re: transpiling to low level C1BGB
17 Dec 24 ii ii  i`* Re: transpiling to low level C10bart
17 Dec 24 ii ii  i +- Re: transpiling to low level C1Janis Papanagnou
17 Dec 24 ii ii  i +* Re: transpiling to low level C6Waldek Hebisch
17 Dec 24 ii ii  i i+* Re: transpiling to low level C4bart
18 Dec 24 ii ii  i ii`* Re: transpiling to low level C3Waldek Hebisch
18 Dec 24 ii ii  i ii `* Re: transpiling to low level C2bart
18 Dec 24 ii ii  i ii  `- Re: transpiling to low level C1Waldek Hebisch
18 Dec 24 ii ii  i i`- Re: transpiling to low level C1Janis Papanagnou
17 Dec 24 ii ii  i `* Re: transpiling to low level C2Keith Thompson
18 Dec 24 ii ii  i  `- Re: transpiling to low level C1Janis Papanagnou
17 Dec 24 ii ii  `- Re: transpiling to low level C1Janis Papanagnou
21 Dec 24 ii i`* Re: transpiling to low level C59Tim Rentsch
21 Dec 24 ii i `* Re: transpiling to low level C58Janis Papanagnou
21 Dec 24 ii i  +* Re: transpiling to low level C3Tim Rentsch
22 Dec 24 ii i  i`* Re: transpiling to low level C2Janis Papanagnou
13 Jan 25 ii i  i `- Re: transpiling to low level C1Tim Rentsch
21 Dec 24 ii i  +* Re: transpiling to low level C21Michael S
22 Dec 24 ii i  i+* Re: transpiling to low level C17Janis Papanagnou
22 Dec 24 ii i  ii`* Re: transpiling to low level C16Michael S
22 Dec 24 ii i  ii `* Re: transpiling to low level C15Janis Papanagnou
22 Dec 24 ii i  ii  `* Re: transpiling to low level C14Michael S
22 Dec 24 ii i  ii   +* Re: transpiling to low level C11Janis Papanagnou
23 Dec 24 ii i  ii   i`* Re: transpiling to low level C10Tim Rentsch
23 Dec 24 ii i  ii   i `* Re: transpiling to low level C9Waldek Hebisch
23 Dec 24 ii i  ii   i  +* Re: transpiling to low level C3David Brown
25 Dec 24 ii i  ii   i  i`* Re: transpiling to low level C2BGB
28 Dec 24 ii i  ii   i  i `- Re: transpiling to low level C1Tim Rentsch
4 Jan 25 ii i  ii   i  `* Re: transpiling to low level C5Tim Rentsch
4 Jan 25 ii i  ii   i   +- Re: transpiling to low level C1Chris M. Thomasson
5 Jan 25 ii i  ii   i   `* Re: transpiling to low level C3Ben Bacarisse
5 Jan 25 ii i  ii   i    +- Re: transpiling to low level C1James Kuyper
8 Jan 25 ii i  ii   i    `- Re: transpiling to low level C1Tim Rentsch
22 Dec 24 ii i  ii   `* Re: transpiling to low level C2James Kuyper
22 Dec 24 ii i  ii    `- Re: transpiling to low level C1Janis Papanagnou
23 Dec 24 ii i  i`* Re: transpiling to low level C3Tim Rentsch
23 Dec 24 ii i  i `* Re: transpiling to low level C2Chris M. Thomasson
24 Dec 24 ii i  i  `- Re: transpiling to low level C1Chris M. Thomasson
22 Dec 24 ii i  +* Re: transpiling to low level C27Waldek Hebisch
22 Dec 24 ii i  i+* Re: transpiling to low level C2Michael S
22 Dec 24 ii i  ii`- Re: transpiling to low level C1bart
22 Dec 24 ii i  i+* Re: transpiling to low level C3Tim Rentsch
22 Dec 24 ii i  ii`* Re: transpiling to low level C2Waldek Hebisch
4 Jan 25 ii i  ii `- Re: transpiling to low level C1Tim Rentsch
22 Dec 24 ii i  i`* Re: transpiling to low level C21Janis Papanagnou
22 Dec 24 ii i  i +* Re: transpiling to low level C4Michael S
23 Dec 24 ii i  i i+- Re: transpiling to low level C1bart
23 Dec 24 ii i  i i+- Re: transpiling to low level C1Michael S
23 Dec 24 ii i  i i`- Re: transpiling to low level C1Tim Rentsch
23 Dec 24 ii i  i +- Re: transpiling to low level C1Waldek Hebisch
23 Dec 24 ii i  i +* Re: transpiling to low level C14David Brown
23 Dec 24 ii i  i `- Re: transpiling to low level C1Tim Rentsch
22 Dec 24 ii i  +* Re: transpiling to low level C2Ben Bacarisse
22 Dec 24 ii i  `* Re: transpiling to low level C4Kaz Kylheku
16 Dec 24 ii `* Re: transpiling to low level C13Lawrence D'Oliveiro
16 Dec 24 i`* Re: transpiling to low level C2Lawrence D'Oliveiro
9 Feb 25 `* Re: transpiling to low level C2User One

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal