naked popcnt function
Marco Leise via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Nov 22 19:08:53 PST 2014
Am Sat, 22 Nov 2014 18:30:05 +0000
schrieb "Ad" <ad at fakmail.fg>:
> Hello, I would like to write a "popcnt" function. This works fine
>
> ulong popcnt(ulong x)
> {
> asm { mov RAX, x ; popcnt RAX, RAX ; }
> }
>
> However, if I add the "naked" keyword ( which should improve
> performance? ) it doesn't work anymore and I can't figure out
> what change I am supposed to make ( aside from x[RBP] instead of
> x )
> This function is going to be *heavily* used.
>
> Thanks for any help.
It is long ago that I tried "naked", but IIRC it strips all
compiler generated code from the function and I see no 'ret'
in your function. So it probably runs into whatever code lies
behind that function in the executable.
I would use a tool like obj2asm or objdump to check what the
generated code looks like, or use a debugger that can
disassemble on the fly.
--
Marco
More information about the Digitalmars-d-learn
mailing list