Am Sat, 22 Nov 2014 18:30:05 +0000 schrieb "Ad" <a...@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