Re: "A diagram of C23 basic types"

Liste des GroupesRevenir à cl c  
Sujet : Re: "A diagram of C23 basic types"
De : cr88192 (at) *nospam* gmail.com (BGB)
Groupes : comp.lang.c
Date : 03. Apr 2025, 07:20:48
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vsl9ep$3vdjj$1@dont-email.me>
References : 1 2
User-Agent : Mozilla Thunderbird
On 4/2/2025 1:02 AM, Lawrence D'Oliveiro wrote:
On Wed, 02 Apr 2025 16:59:59 +1100, Alexis wrote:
 
Thought people here might be interested in this image on Jens Gustedt's
blog, which translates section 6.2.5, "Types", of the C23 standard into
a graph of inclusions:
>
   https://gustedt.wordpress.com/2025/03/29/a-diagram-of-c23-basic-types/
 Wow, we have bit-precise integers now?
 PL/I, come back, all is forgiven!
FWIW:
I added them into my compiler, and (because it overlapped with something else I was working on) I added some Verilog style features as well (as an extension).
Also added "_UBitInt(n)" as "_UnsignedBitInt(n)" and "unsigned _BitInt(n)" were too verbose for my liking.
So, extended features:
   _UBitInt(5)   cr, cg, cb;
   _UBitInt(16)  clr;
   clr = (_UBitInt(16)) { 0b0u1, cr, cg, cb };
Composes an RGB555 value.
   cg = clr[9:5]; //extract bits
   clr[9:5] = cg;  //assign bits
   clr[15:10] = clr[9:5];  //copy bits from one place to another.
And:
   (_UBitInt(16)) { 0b0u1, cr, cg, cb } = clr;
Decomposing it into components, any fixed-width constants being treated as placeholders.
Note that within hex and binary literals, in some contexts 'z' is allowed to represent "high impedance" bits. These may be used in some niche cases, but (if assigned to a runtime value) will decay into a normal binary value (with any 'z' bits becoming 0).
Eg:
   __switchz(clr)
   {
     case 0b01zzzz1zzzz1zzzzu16: ...  //light
     case 0b00zzzz0zzzz0zzzzu16: ...  //dim
     case 0b1zzzzzzzzzzzzzzzu16: ...  //transparent
   }
...
Though, some of this was partly because I had started trying to add Verilog support (intention being to use my compiler in a way vaguely similar to Verilator, but with hopefully "better" than the pretty much non-existent debugger support in Verilator), and in this case, exposing some of it C side makes it easier to test features.
Though, possibly, something like:
  __vlmodule FooDev(
     _UBitInt(1) clock,
     _UBitInt(1) reset,
     _OutBitInt(1) out)
{
   _UBitInt(8) cnt;
   __vlassign out = cnt[7];
   __vlalways(__vlposedge clock)
   {
     cnt = cnt + 1;
   }
}
Would be going a bit too far...
I don't expect people would actually really use any of this, though (ironically) with my ISA some of this does generate more efficient code than the more traditional use of shifts and masks.
Though, it is still not enough to compete with more specialized helper instructions for things like working with RGB555 values (which are fairly extensively used in my case).
Well, or more specifically, I commonly use a non-standard RGB555 variant:
   0rrrrrgggggbbbbb  //standard opaque colors
   1rrrraggggabbbba  //translucent or transparent (3-bit alpha)
     a = 111 = 224
     ...
     a = 001 = 32
     a = 000 = 0
So, in effect, there are 9 possible alpha levels, with use of alpha coming at the cost of color fidelity (but, on average, color fidelity is still better than RGBA4444; as fully-opaque values are the most common).
To some extent I also use indexed color, but mostly for cases where RGB555 is too much cost.
Had mostly ended up using a scheme like:
   srgbyyyy
     s=saturation (0=high, 1=low)
     r/g/b: red/green/blue
     yyyy: luma
   With, as special cases (srgb):
     0000=grays, 0111=orange, 1000=olive, 1111=azure
And, the colors near black are used for the standard 16 color palette and some ranges of off-white colors (yyyy=0..2). Within the RGBI colors, 0111 was used as the transparent color (0000 and 1000 are absent, 1111 represents a full-intensity white that is slightly lighter than the top of the grays axis, which is formally #F0F0F0 rather than #FFFFFF)
Mostly because generally this gives better image quality than the more standard 216 and 252 color palettes (which tend to just look kinda terrible), and, ironically, is also generally more friendly to hardware decoding.
...

Date Sujet#  Auteur
2 Apr 25 * "A diagram of C23 basic types"296Alexis
2 Apr 25 +* Re: "A diagram of C23 basic types"4Lawrence D'Oliveiro
3 Apr 25 i`* Re: "A diagram of C23 basic types"3BGB
3 Apr 25 i `* Re: "A diagram of C23 basic types"2Lawrence D'Oliveiro
4 Apr 25 i  `- Re: "A diagram of C23 basic types"1BGB
2 Apr 25 +* Re: "A diagram of C23 basic types"9Janis Papanagnou
2 Apr 25 i+* Re: "A diagram of C23 basic types"6Kaz Kylheku
3 Apr 25 ii`* Re: "A diagram of C23 basic types"5Janis Papanagnou
3 Apr 25 ii +* Re: "A diagram of C23 basic types"3David Brown
3 Apr 25 ii i`* Re: "A diagram of C23 basic types"2Janis Papanagnou
3 Apr 25 ii i `- Re: "A diagram of C23 basic types"1BGB
3 Apr 25 ii `- Re: "A diagram of C23 basic types"1BGB
2 Apr 25 i+- Re: "A diagram of C23 basic types"1David Brown
3 Apr 25 i`- Re: "A diagram of C23 basic types"1Tim Rentsch
2 Apr 25 +* Re: "A diagram of C23 basic types"276bart
2 Apr 25 i+* Re: "A diagram of C23 basic types"250Muttley
2 Apr 25 ii+* Re: "A diagram of C23 basic types"220David Brown
2 Apr 25 iii+* Re: "A diagram of C23 basic types"216Muttley
2 Apr 25 iiii+* Re: "A diagram of C23 basic types"142Thiago Adams
2 Apr 25 iiiii`* Re: "A diagram of C23 basic types"141Muttley
2 Apr 25 iiiii +* Re: "A diagram of C23 basic types"139bart
2 Apr 25 iiiii i+* Re: "A diagram of C23 basic types"58Muttley
2 Apr 25 iiiii ii+* Re: "A diagram of C23 basic types"5Janis Papanagnou
3 Apr 25 iiiii iii+* Re: "A diagram of C23 basic types"2Janis Papanagnou
3 Apr 25 iiiii iiii`- Re: "A diagram of C23 basic types"1Janis Papanagnou
3 Apr 25 iiiii iii`* Re: "A diagram of C23 basic types"2David Brown
3 Apr 25 iiiii iii `- Re: "A diagram of C23 basic types"1BGB
3 Apr 25 iiiii ii+* Re: "A diagram of C23 basic types"49bart
3 Apr 25 iiiii iii+* Re: "A diagram of C23 basic types"46Kaz Kylheku
3 Apr 25 iiiii iiii+* Re: "A diagram of C23 basic types"43Keith Thompson
3 Apr 25 iiiii iiiii+* Re: "A diagram of C23 basic types"41BGB
3 Apr 25 iiiii iiiiii`* Re: "A diagram of C23 basic types"40Kaz Kylheku
3 Apr 25 iiiii iiiiii +* Re: "A diagram of C23 basic types"36bart
4 Apr 25 iiiii iiiiii i+* Re: "A diagram of C23 basic types"31Lawrence D'Oliveiro
9 Apr 25 iiiii iiiiii ii`* Re: "A diagram of C23 basic types"30Michael S
9 Apr 25 iiiii iiiiii ii +* Re: "A diagram of C23 basic types"21David Brown
9 Apr 25 iiiii iiiiii ii i+* Re: "A diagram of C23 basic types"17BGB
9 Apr 25 iiiii iiiiii ii ii`* Re: "A diagram of C23 basic types"16bart
10 Apr 25 iiiii iiiiii ii ii `* Re: "A diagram of C23 basic types"15David Brown
10 Apr 25 iiiii iiiiii ii ii  +* Re: "A diagram of C23 basic types"5Michael S
12 Apr06:43 iiiii iiiiii ii ii  i`* Re: "A diagram of C23 basic types"4Lawrence D'Oliveiro
12 Apr15:10 iiiii iiiiii ii ii  i +- Re: "A diagram of C23 basic types"1James Kuyper
12 Apr16:21 iiiii iiiiii ii ii  i `* Re: "A diagram of C23 basic types"2David Brown
12 Apr20:27 iiiii iiiiii ii ii  i  `- Re: "A diagram of C23 basic types"1BGB
10 Apr 25 iiiii iiiiii ii ii  +* Re: "A diagram of C23 basic types"4Muttley
10 Apr 25 iiiii iiiiii ii ii  i`* Re: "A diagram of C23 basic types"3bart
10 Apr 25 iiiii iiiiii ii ii  i +- Re: "A diagram of C23 basic types"1Muttley
12 Apr06:44 iiiii iiiiii ii ii  i `- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
10 Apr 25 iiiii iiiiii ii ii  +* Re: "A diagram of C23 basic types"4bart
10 Apr 25 iiiii iiiiii ii ii  i`* Re: "A diagram of C23 basic types"3David Brown
10 Apr 25 iiiii iiiiii ii ii  i `* Re: "A diagram of C23 basic types"2bart
10 Apr 25 iiiii iiiiii ii ii  i  `- Re: "A diagram of C23 basic types"1David Brown
10 Apr 25 iiiii iiiiii ii ii  `- Re: "A diagram of C23 basic types"1BGB
9 Apr 25 iiiii iiiiii ii i`* Re: "A diagram of C23 basic types"3Keith Thompson
12 Apr06:42 iiiii iiiiii ii i `* Re: "A diagram of C23 basic types"2Lawrence D'Oliveiro
12 Apr21:46 iiiii iiiiii ii i  `- Re: "A diagram of C23 basic types"1Keith Thompson
9 Apr 25 iiiii iiiiii ii +* Re: "A diagram of C23 basic types"7Tim Rentsch
9 Apr 25 iiiii iiiiii ii i+* Re: "A diagram of C23 basic types"3Keith Thompson
14 Apr10:10 iiiii iiiiii ii ii`* Re: "A diagram of C23 basic types"2Tim Rentsch
14 Apr12:08 iiiii iiiiii ii ii `- Re: "A diagram of C23 basic types"1Keith Thompson
10 Apr 25 iiiii iiiiii ii i`* Re: "A diagram of C23 basic types"3Michael S
14 Apr09:59 iiiii iiiiii ii i `* Re: "A diagram of C23 basic types"2Tim Rentsch
14 Apr10:44 iiiii iiiiii ii i  `- Re: "A diagram of C23 basic types"1Michael S
9 Apr 25 iiiii iiiiii ii `- Re: "A diagram of C23 basic types"1Kaz Kylheku
4 Apr 25 iiiii iiiiii i`* Re: "A diagram of C23 basic types"4Waldek Hebisch
4 Apr 25 iiiii iiiiii i +* Re: "A diagram of C23 basic types"2Keith Thompson
4 Apr 25 iiiii iiiiii i i`- Re: "A diagram of C23 basic types"1Waldek Hebisch
8 Apr 25 iiiii iiiiii i `- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
3 Apr 25 iiiii iiiiii +* Re: "A diagram of C23 basic types"2Keith Thompson
4 Apr 25 iiiii iiiiii i`- Re: "A diagram of C23 basic types"1Kaz Kylheku
4 Apr 25 iiiii iiiiii `- Re: "A diagram of C23 basic types"1Michael S
4 Apr 25 iiiii iiiii`- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
3 Apr 25 iiiii iiii+- Re: "A diagram of C23 basic types"1Muttley
3 Apr 25 iiiii iiii`- Re: "A diagram of C23 basic types"1Keith Thompson
3 Apr 25 iiiii iii+- Re: "A diagram of C23 basic types"1David Brown
4 Apr 25 iiiii iii`- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
3 Apr 25 iiiii ii`* Re: "A diagram of C23 basic types"3Muttley
4 Apr 25 iiiii ii `* Re: "A diagram of C23 basic types"2Muttley
4 Apr 25 iiiii ii  `- Re: "A diagram of C23 basic types"1Muttley
4 Apr 25 iiiii i`* Re: "A diagram of C23 basic types"80Lawrence D'Oliveiro
4 Apr 25 iiiii i +- Re: "A diagram of C23 basic types"1Keith Thompson
7 Apr 25 iiiii i +* Re: "A diagram of C23 basic types"29candycanearter07
7 Apr 25 iiiii i i+* Re: "A diagram of C23 basic types"27Janis Papanagnou
8 Apr 25 iiiii i ii+- Re: "A diagram of C23 basic types"1candycanearter07
14 Apr05:33 iiiii i ii`* Re: "A diagram of C23 basic types"25Lawrence D'Oliveiro
14 Apr18:40 iiiii i ii `* Re: "A diagram of C23 basic types"24candycanearter07
14 Apr18:46 iiiii i ii  +* Re: "A diagram of C23 basic types"2Kaz Kylheku
15 Apr08:41 iiiii i ii  i`- Re: "A diagram of C23 basic types"1Janis Papanagnou
14 Apr19:36 iiiii i ii  `* Re: "A diagram of C23 basic types"21BGB
14 Apr23:15 iiiii i ii   +- Re: "A diagram of C23 basic types"1Keith Thompson
14 Apr23:33 iiiii i ii   `* Re: "A diagram of C23 basic types"19Lawrence D'Oliveiro
14 Apr23:56 iiiii i ii    +* Re: "A diagram of C23 basic types"12Keith Thompson
15 Apr00:41 iiiii i ii    i+* Re: "A diagram of C23 basic types"7Lawrence D'Oliveiro
15 Apr01:57 iiiii i ii    ii+- Re: "A diagram of C23 basic types"1Keith Thompson
15 Apr04:25 iiiii i ii    ii`* Re: "A diagram of C23 basic types"5James Kuyper
15 Apr05:11 iiiii i ii    ii +* Re: "A diagram of C23 basic types"2Lawrence D'Oliveiro
15 Apr15:06 iiiii i ii    ii i`- Re: "A diagram of C23 basic types"1James Kuyper
15 Apr06:00 iiiii i ii    ii `* Re: "A diagram of C23 basic types"2BGB
15 Apr18:29 iiiii i ii    ii  `- Re: "A diagram of C23 basic types"1BGB
15 Apr02:46 iiiii i ii    i`* Re: "A diagram of C23 basic types"4Chris M. Thomasson
15 Apr05:14 iiiii i ii    i +- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
15 Apr15:19 iiiii i ii    i `* Re: "A diagram of C23 basic types"2James Kuyper
15 Apr01:43 iiiii i ii    `* Re: "A diagram of C23 basic types"6BGB
8 Apr 25 iiiii i i`- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
7 Apr 25 iiiii i `* Re: "A diagram of C23 basic types"49bart
4 Apr 25 iiiii `- Re: "A diagram of C23 basic types"1Lawrence D'Oliveiro
2 Apr 25 iiii+* Re: "A diagram of C23 basic types"2Michael S
2 Apr 25 iiii`* Re: "A diagram of C23 basic types"71David Brown
2 Apr 25 iii`* Re: "A diagram of C23 basic types"3Kaz Kylheku
2 Apr 25 ii`* Re: "A diagram of C23 basic types"29Waldek Hebisch
5 Apr 25 i`* Re: "A diagram of C23 basic types"25Philipp Klaus Krause
3 Apr 25 +* Re: "A diagram of C23 basic types"2Michael S
11 Apr17:34 +* Re: "A diagram of C23 basic types"2Tim Rentsch
11 Apr17:48 `* Re: "A diagram of C23 basic types"2Tim Rentsch

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal