Thread overview
odd bit optimized function
Sep 22, 2023
Vitaliy Fadeev
Sep 22, 2023
claptrap
Sep 23, 2023
Vitaliy Fadeev
September 22, 2023

x86 first bit check (odd check):

AND EAX, EAX  ; update FLAG OF  // odd flag
JO  Label

Is there D-Lang operator of optimized library function ?

September 22, 2023

On Friday, 22 September 2023 at 14:29:08 UTC, Vitaliy Fadeev wrote:

>

x86 first bit check (odd check):

AND EAX, EAX  ; update FLAG OF  // odd flag
JO  Label

Is there D-Lang operator of optimized library function ?

There's no "odd" flag, theres the overflow flag "O", and "JO" is jump on overflow. Or there's the parity flag "P", which signals an odd or even number of bits in the lowest byte of the result (on x86 anyway).

If you just want to test if an int is odd or even, just do

if (x & 1) writeln("is odd");
else writeln("is even");

that'll compile to an AND and a jmp, or conditional move maybe.

If you want to access the parity flag I think you're out of luck aside from using inline asm.

September 23, 2023

On Friday, 22 September 2023 at 22:48:34 UTC, claptrap wrote:

>

On Friday, 22 September 2023 at 14:29:08 UTC, Vitaliy Fadeev wrote:

>

x86 first bit check (odd check):

AND EAX, EAX  ; update FLAG OF  // odd flag
JO  Label

Is there D-Lang operator of optimized library function ?

There's no "odd" flag, theres the overflow flag "O", and "JO" is jump on overflow. Or there's the parity flag "P", which signals an odd or even number of bits in the lowest byte of the result (on x86 anyway).

If you just want to test if an int is odd or even, just do

if (x & 1) writeln("is odd");
else writeln("is even");

that'll compile to an AND and a jmp, or conditional move maybe.

If you want to access the parity flag I think you're out of luck aside from using inline asm.

Thank, claptrap!
Yes, P FLAG, of course! JP instruction.

if (x & 1)

I am using the code above.

>

using inline asm

OK, may be.