Steven Schveighoffer wrote:
On Thu, 14 Jul 2011 06:12:00 -0400, Piotr Szturmaj
<bncr...@jadamspam.pl> wrote:
Btw. How compiler intrinsics work? I see there's only bswap
declaration (without body) in core.bitop. Where can I find compiler
code which actually substitutes bswap() into real instructions?
A complier intrinsic is a special function that the compiler replaces
with inline code. The idea is, some targets of the compiler have
instructions which implement the function, so instead of doing a
function call and inline assembly, the compiler just replaces the call
to a single instruction (in this case bswap).
So the answer is, you won't find that code anywhere :) If you grep for
bswap in the dmd source, you might find out how it does it.
-Steve
Thanks, I actually meant code which is generated by the compiler :) I
wanted to know how it's generated. Now I know that bswap() is actually
substituted by BSWAP x86 instruction on that architecture. I found that
16 bit bswap may be implemented using XCHG instruction, but
unfortunately there's no equivalent for 64 bit swap in 32 bit mode (only
in x86-64).