Deutsch English Français Italiano |
<20240913144411.00005866@yahoo.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!2.eu.feeder.erje.net!3.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Michael S <already5chosen@yahoo.com> Newsgroups: comp.arch Subject: Re: Computer architects leaving Intel... Date: Fri, 13 Sep 2024 14:44:11 +0300 Organization: A noiseless patient Spider Lines: 84 Message-ID: <20240913144411.00005866@yahoo.com> References: <vaqgtl$3526$1@dont-email.me> <memo.20240830090549.19028u@jgd.cix.co.uk> <2024Aug30.161204@mips.complang.tuwien.ac.at> <86r09ulqyp.fsf@linuxsc.com> <2024Sep8.173639@mips.complang.tuwien.ac.at> <p1cvdjpqjg65e6e3rtt4ua6hgm79cdfm2n@4ax.com> <2024Sep10.101932@mips.complang.tuwien.ac.at> <ygn8qvztf16.fsf@y.z> <2024Sep11.123824@mips.complang.tuwien.ac.at> <vbsoro$3ol1a$1@dont-email.me> <867cbhgozo.fsf@linuxsc.com> <20240912142948.00002757@yahoo.com> <865xqzg63u.fsf@linuxsc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Injection-Date: Fri, 13 Sep 2024 13:44:19 +0200 (CEST) Injection-Info: dont-email.me; posting-host="46d778e366440aa5cd4ab92ae9134f42"; logging-data="867823"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+AbSEDqoygDgfLLjtbxCEcEeKUakE3vfc=" Cancel-Lock: sha1:WcXekrMMviHmw3US5fM8XC/R3r0= X-Newsreader: Claws Mail 4.1.1 (GTK 3.24.34; x86_64-w64-mingw32) Bytes: 4266 On Fri, 13 Sep 2024 04:12:21 -0700 Tim Rentsch <tr.17687@z991.linuxsc.com> wrote: > Michael S <already5chosen@yahoo.com> writes: > > > On Thu, 12 Sep 2024 03:12:11 -0700 > > Tim Rentsch <tr.17687@z991.linuxsc.com> wrote: > > > >> BGB <cr88192@gmail.com> writes: > >> > >> [...] > >> > >>> Would be nice, say, if there were semi-standard compiler macros > >>> for various things: > >>> Endianess (macros exist, typically compiler specific); > >>> And, apparently GCC and Clang can't agree on which strategy to > >>> use. Whether or not the target/compiler allows misaligned memory > >>> access; If set, one may use misaligned access. > >>> Whether or not memory uses a single address space; > >>> If set, all pointer comparisons are allowed. > >>> > >>> [elaborations on the above] > >> > >> I suppose it's natural for hardware-type folks to want features > >> like this to be part of standard C. In a sense what is being > >> asked is to make C a high-level assembly language. But that's > >> not what C is. Nor should it be. > > > > Why not? > > Because it's not needed, and would make things worse rather > than better. The result would be a bigger language but not > a better language. > I beg to differ. Yes, the standard would be bigger. And yes, few unimportant benchmarks would run a little slower. But a job of compiler writers would be simpler and less exciting (good thing!). The most importantly, programming in resulting language would feel more predictable. > > I don't see practical need for all those UBs apart from buffer > > overflow. More so, I don't see the need for UB in certain > > limited classes of buffer overflows. > > Eliminating undefined behavior is not what's being asked for. > These two questions are not the same. > > > struct { > > char x[8] > > int y; > > } bar; > > bar.y = 0; bar.x[8] = 42; > > > > IMHO, here behavior should be fully defined by implementation. And > > in practice it is. Just not in theory. > > Do you mean union rather than struct? And do you mean bar.x[7] > rather than bar.x[8]? Surely no one would expect that storing > into bar.x[8] should be well-defined behavior. > > If the code were this > > union { > char x[8]; > int y; > } bar; > bar.y = 0; bar.x[7] = 42; > > and assuming sizeof(int) == 4, what is it that you think should > be defined by the C standard but is not? And the same question > for a struct if that is what you meant. No, I mean struct and I mean 8. And I mean that a typical implementation-defined behavior would be bar.y==42 on LE machines and bar.y==42*2**24 on BE machines. As it actually happens in reality with all production compilers.