Deutsch English Français Italiano |
<vbeaap$nlm3$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: David Brown <david.brown@hesbynett.no> Newsgroups: comp.arch Subject: Re: Computer architects leaving Intel... Date: Fri, 6 Sep 2024 09:17:45 +0200 Organization: A noiseless patient Spider Lines: 54 Message-ID: <vbeaap$nlm3$2@dont-email.me> References: <2024Aug30.161204@mips.complang.tuwien.ac.at> <vb4q5o$12ukk$3@dont-email.me> <vb6a16$38aj5$1@dont-email.me> <vb7evj$12ukk$4@dont-email.me> <vb8587$3gq7e$1@dont-email.me> <vb91e7$3o797$1@dont-email.me> <vb9eeh$3q993$1@dont-email.me> <vb9l7k$3r2c6$2@dont-email.me> <vba26l$3te44$1@dont-email.me> <vbag2s$3vhih$1@dont-email.me> <vbbnf9$8j04$1@dont-email.me> <vbbsl4$9hdg$1@dont-email.me> <vbcbob$bd22$3@dont-email.me> <vbcob9$dvp4$1@dont-email.me> <vbd6ia$e0ld$2@dont-email.me> <UxpCO.174965$Hld5.7714@fx15.iad> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 06 Sep 2024 09:17:45 +0200 (CEST) Injection-Info: dont-email.me; posting-host="6ee2407e3ebfa0481e4977a48a1e13c1"; logging-data="775875"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19AbFinMyhPoffjGo9nvlR6LJGbSi8FHko=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Cancel-Lock: sha1:abVP05BkXgba4AbGoMbn2XV4ggE= In-Reply-To: <UxpCO.174965$Hld5.7714@fx15.iad> Content-Language: en-GB Bytes: 3195 On 05/09/2024 23:39, Scott Lurndal wrote: > Bernd Linsel <bl1-thispartdoesnotbelonghere@gmx.com> writes: >> On 05.09.24 19:04, Terje Mathisen wrote: >>> One of my alternatives are >>> >>> unsigned u = start; // Cannot be less than zero >>> if (u) { >>> u++; >>> do { >>> u--; >>> data[u]... >>> while (u); >>> } >>> >>> This typically results in effectively the same asm code as the signed >>> version, except for a bottom JGE (Jump (signed) Greater or Equal instead >>> of JA (Jump Above or Equal, but my version is far more verbose. >>> >>> Alternatively, if you don't need all N bits of the unsigned type, then >>> you can subtract and check if the top bit is set in the result: >>> >>> %G�%@| for (unsigned u = start; (u & TOPBIT) == 0; u--) >>> >>> Terje >>> >> >> What about: >> >> for (unsigned u = start; u != ~0u; --u) > > This is the form we use most when we need > to work in reverse. > In a code review, I would reject that - and all the other nonsenses suggested here as a way to force all loop indices to be unsigned types as though that rule was the 11th commandment. Just write code that makes sense - it's /not/ hard in this case! for (int i = start; i >= 0; i--) ... If you need the loop counter to be an unsigned type inside the loop code, make an unsigned version: for (int i = start; i >= 0; i--) { const unsigned int u = i; ... } Sometimes it amazes me the kind of nonsense people write in code because of obsession about particular rules. Code clarity trumps /all/ stylistic rules.