Deutsch English Français Italiano |
<vbn8pe$2g9i6$2@paganini.bofh.team> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!feeds.phibee-telecom.net!2.eu.feeder.erje.net!feeder.erje.net!newsfeed.bofh.team!paganini.bofh.team!not-for-mail From: Waldek Hebisch <antispam@fricas.org> Newsgroups: comp.lang.c Subject: Re: Top 10 most common hard skills listed on resumes... Date: Mon, 9 Sep 2024 16:46:40 -0000 (UTC) Organization: To protect and to server Message-ID: <vbn8pe$2g9i6$2@paganini.bofh.team> References: <vab101$3er$1@reader1.panix.com> <vbcs65$eabn$1@dont-email.me> <vbekut$1kd24$1@paganini.bofh.team> <vbepcb$q6p2$1@dont-email.me> <vbgb5q$1ruv8$1@paganini.bofh.team> <vbhbbb$1blt4$1@dont-email.me> <vbipp5$24kl5$1@paganini.bofh.team> <vbk0d9$1tajm$1@dont-email.me> <vbkpfc$27l2o$1@paganini.bofh.team> <vbl3am$228vv$1@dont-email.me> <vblfgb$2dkij$1@paganini.bofh.team> <vblhp7$249ug$1@dont-email.me> <vbloje$2e34o$1@paganini.bofh.team> <vbmeae$2bn2v$2@dont-email.me> Injection-Date: Mon, 9 Sep 2024 16:46:40 -0000 (UTC) Injection-Info: paganini.bofh.team; logging-data="2631238"; posting-host="WwiNTD3IIceGeoS5hCc4+A.user.paganini.bofh.team"; mail-complaints-to="usenet@bofh.team"; posting-account="9dIQLXBM7WM9KzA+yjdR4A"; User-Agent: tin/2.6.2-20221225 ("Pittyvaich") (Linux/6.1.0-9-amd64 (x86_64)) X-Notice: Filtered by postfilter v. 0.9.3 Bytes: 4229 Lines: 53 David Brown <david.brown@hesbynett.no> wrote: > On 09/09/2024 05:04, Waldek Hebisch wrote: >> Bart <bc@freeuk.com> wrote: >>> On 09/09/2024 01:29, Waldek Hebisch wrote: >>>> Bart <bc@freeuk.com> wrote: >>> >>>> No. It is essential for efficiency to have 32-bit types. On 32-bit >>>> machines doing otherwise would add useless instructions to object >>>> code. More precisly, really stupid compiler will generate useless >>>> intructions even with my declarations, really smart one will >>>> notice that variables fit in 32-bits and optimize accordingly. >>>> But at least some gcc versions needed such declarations. Note >>>> also that my version makes clear that there there is >>>> symmetry (everything should be added using 64-bit precision), >>>> you depend on promotion rules which creates visual asymetry >>>> are requires reasoning to realize that meaning is symetric. >>> >>> Your posted code used 64-bit aritmetic. The xext and c 32-bit variables >>> were used in loops where they need to be widened to 64 bits anyway. The >>> new value of c is set from a 32-bit result. >> >> Well, at C level there is 64-bit type. The intent is that C compiler >> should notice that the result is 32-bit + carry flag. Ideally >> compiler should notice that c has only one bit and can keep it >> in carry flag. On i386 comparison needed for loop control would >> destroy carry flag, so there must be code using value of carry in >> register and code to save carry to register. But one addition >> of highs parts can be skipped. On 32-bit ARM compiler can use >> special machine istructions and actually generated code which >> is close to optimal. > > When you have a type that you want to be at least 32 bits (to cover the > range you need), and want it to be as efficient as possible on 32-bit > and 64-bit machines (and 16-bit and 8-bit, still found in > microcontrollers), use "int_fast32_t". On x86-64 it will be 64-bit, on > 32-bit systems it will be 32-bit. Use of the [u]int_fastNN_t types can > make code significantly more efficient on 64-bit systems while retaining > efficiency on 32-bit (or even smaller) targets. Well, I have constraints, some of which are outside of C code. To resolve contraints I normally use some configure machinery. If a standard type is exact match for my constraints, then I would use standard type, possibly adding some fallbacks for pre-standard systems. But if my constranits differ, I see no advantage in using more "fancy" standard types compared to old types. Concerning '<stdint.h>', somewhat worring thing is that several types there seem to be optional (or maybe where optional in older versions of the standard). I am not sure if this can be real problem, but too many times I saw that on various issues developers say "this in not mandatory, so we will skip it". -- Waldek Hebisch