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