Re: transpiling to low level C

Liste des GroupesRevenir à cl c 
Sujet : Re: transpiling to low level C
De : thiago.adams (at) *nospam* gmail.com (Thiago Adams)
Groupes : comp.lang.c
Date : 17. Dec 2024, 18:59:49
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vjse6l$1rfp2$2@dont-email.me>
References : 1 2 3 4 5 6 7
User-Agent : Mozilla Thunderbird
Em 12/17/2024 2:55 PM, Thiago Adams escreveu:
Em 12/17/2024 4:03 AM, BGB escreveu:
On 12/16/2024 5:21 AM, Thiago Adams wrote:
On 15/12/2024 20:53, BGB wrote:
On 12/15/2024 3:32 PM, bart wrote:
On 15/12/2024 19:08, Bonita Montero wrote:
C++ is more readable because is is magnitudes more expressive than C.
You can easily write a C++-statement that would hunddres of lines in
C (imagines specializing a unordered_map by hand). Making a language
less expressive makes it even less readable, and that's also true for
your reduced C.
>
>
That's not really the point of it. This reduced C is used as an intermediate language for a compiler target. It will not usually be read, or maintained.
>
An intermediate language needs to at a lower level than the source language.
>
And for this project, it needs to be compilable by any C89 compiler.
>
Generating C++ would be quite useless.
>
>
As an IL, even C is a little overkill, unless turned into a restricted subset (say, along similar lines to GCC's GIMPLE).
>
Say:
   Only function-scope variables allowed;
   No high-level control structures;
   ...
>
Say:
   int foo(int x)
   {
     int i, v;
     for(i=x, v=0; i>0; i--)
       v=v*i;
     return(v);
   }
>
Becoming, say:
   int foo(int x)
   {
     int i;
     int v;
     i=x;
     v=0;
     if(i<=0)goto L1;
     L0:
     v=v*i;
     i=i-1;
     if(i>0)goto L0;
     L1:
     return v;
   }
>
...
>
>
I have considered to remove loops and keep only goto.
But I think this is not bring too much simplification.
>
>
It depends.
>
If the compiler works like an actual C compiler, with a full parser and AST stage, yeah, it may not save much.
>
>
If the parser is a thin wrapper over 3AC operations (only allowing statements that map 1:1 with a 3AC IR operation), it may save a bit more...
>
>
>
As for whether or not it makes sense to use a C like syntax here, this is more up for debate (for practical use within a compiler, I would assume a binary serialization rather than an ASCII syntax, though ASCII may be better in terms of inter-operation or human readability).
>
>
But, as can be noted, I would assume a binary serialization that is oriented around operators; and *not* about serializing the structures used to implement those operators. Also I would assume that the IR need not be in SSA form (conversion to full SSA could be done when reading in the IR operations).
>
>
Ny argument is that not using SSA form means fewer issues for both the serialization format and compiler front-end to need to deal with (and is comparably easy to regenerate for the backend, with the backend operating with its internal IR in SSA form).
>
Well, contrast to LLVM assuming everything is always in SSA form.
>
...
>
>
 I also have considered split expressions.
 For instance
 if (a*b+c) {}
 into
 register int r1 = a * b;
register int r2 = r1 + c;
if (r2) {}
 This would make easier to add overflow checks in runtime (if desired) and implement things like _complex
 Is this what you mean by 3AC or SSA?
 This would definitely simplify expressions grammar.
 
I also have consider remove local scopes. But I think local scopes may be useful to better use stack reusing the same addresses when variables goes out of scope.
For instance
{
  int i =1;
  {
   int a  = 2;
  }
  {
   int b  = 3;
  }
}
I think scope makes easier to use the same stack position of a and b because it is easier to see a does not exist any more.

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