Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #163302
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: Check if all 256 bits are clear or set ? |
| Date | 2021-11-04 11:37 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <87zgqkdudb.fsf@bsb.me.uk> (permalink) |
| References | (1 earlier) <sluq0i$fm1$1@dont-email.me> <sluq9s$fm1$2@dont-email.me> <sluqck$fm1$3@dont-email.me> <slur71$oau$1@dont-email.me> <slvt7q$r5h$1@dont-email.me> |
Bonita Montero <Bonita.Montero@gmail.com> writes:
> Am 03.11.2021 um 21:25 schrieb Bonita Montero:
>> In assembly:
>> movzx rax, dl
>> add rax, [rcx]
>> setz al
>> mov rdx, [rcx]
>> xor rdx, [rcx + 8]
>> xor rdx, [rcx + 16]
>> xor rdx, [rcx + 24]
>> setz dl
>> and al, dl
>> ret
>> rcx is the pointer to the memory block with 256 bits and dl
>> if either 0 or 1, depending if the bits should be all 0 or 1.
>
> Can anyone beat this ?
But I don't think the code is correct:
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
bool test256(char *p, bool set)
{
uint64_t *p64 = (uint64_t *)p;
return !(p64[0] + set) & !(p64[0] ^ p64[1] ^ p64[2] ^ p64[3]);
}
int main(void)
{
char b[32] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
printf("%d\n", test256(b, true));
}
prints 1.
In addition, there is undefined behaviour if the pointer p is not
correctly aligned for uint64_t.
--
Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Check if all 256 bits are clear or set ? skybuck2000 <skybuck2000@hotmail.com> - 2021-10-28 17:47 -0700
Re: Check if all 256 bits are clear or set ? skybuck2000 <skybuck2000@hotmail.com> - 2021-10-28 18:02 -0700
Re: Check if all 256 bits are clear or set ? skybuck2000 <skybuck2000@hotmail.com> - 2021-10-28 18:12 -0700
Re: Check if all 256 bits are clear or set ? skybuck2000 <skybuck2000@hotmail.com> - 2021-10-28 19:18 -0700
Re: Check if all 256 bits are clear or set ? skybuck2000 <skybuck2000@hotmail.com> - 2021-10-29 05:16 -0700
Re: Check if all 256 bits are clear or set ? Peter 'Shaggy' Haywood <phaywood@alphalink.com.au> - 2021-11-03 11:11 +1100
Re: Check if all 256 bits are clear or set ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-03 11:50 +0000
Re: Check if all 256 bits are clear or set ? Peter 'Shaggy' Haywood <phaywood@alphalink.com.au> - 2021-11-06 16:08 +1100
Re: Check if all 256 bits are clear or set ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-06 11:02 +0000
Re: Check if all 256 bits are clear or set ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-11-06 15:04 -0700
Re: Check if all 256 bits are clear or set ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-06 22:06 +0000
Re: Check if all 256 bits are clear or set ? Peter 'Shaggy' Haywood <phaywood@alphalink.com.au> - 2021-11-13 11:54 +1100
Re: Check if all 256 bits are clear or set ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-11-06 15:22 -0700
Re: Check if all 256 bits are clear or set ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-07 00:08 +0000
Re: Check if all 256 bits are clear or set ? Tim Rentsch <tr.17687@z991.linuxsc.com> - 2021-11-07 08:12 -0800
Re: Check if all 256 bits are clear or set ? skybuck2000 <skybuck2000@hotmail.com> - 2021-11-23 08:23 -0800
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-06 15:01 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-03 21:04 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-03 21:09 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-03 21:11 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-03 21:25 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-04 07:05 +0100
Re: Check if all 256 bits are clear or set ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-04 11:37 +0000
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-04 17:58 +0100
Re: Check if all 256 bits are clear or set ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-04 17:13 +0000
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-04 18:15 +0100
Re: Check if all 256 bits are clear or set ? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2021-11-04 17:27 +0000
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-04 18:29 +0100
Re: Check if all 256 bits are clear or set ? scott@slp53.sl.home (Scott Lurndal) - 2021-11-04 17:28 +0000
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-05 11:56 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-05 18:20 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-05 18:32 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-04 18:13 +0100
Re: Check if all 256 bits are clear or set ? Manfred <noname@add.invalid> - 2021-11-04 19:28 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-04 20:29 +0100
Re: Check if all 256 bits are clear or set ? Manfred <noname@add.invalid> - 2021-11-05 02:06 +0100
Re: Check if all 256 bits are clear or set ? Bonita Montero <Bonita.Montero@gmail.com> - 2021-11-05 08:57 +0100
Re: Check if all 256 bits are clear or set ? Bart <bc@freeuk.com> - 2021-11-04 18:01 +0000
csiph-web