#include <stdio.h> typedef unsigned int UInt; typedef unsigned long long ULong; #if defined(__x86_64__) #define BSWAPQ(_lval) \ do { \ __asm__ __volatile__("bswapq %0" \ : /*out*/ "+r"(_lval) ); \ } while (0) ULong bswapq ( ULong x ) { BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); BSWAPQ(x); return x; } #endif /* defined(__x86_64__) */ #define BSWAPL(_lval) \ do { \ __asm__ __volatile__("bswapl %0" \ : /*out*/ "+r"(_lval) ); \ } while (0) UInt bswapl ( UInt x ) { BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); BSWAPL(x); return x; } int main ( void ) { #if defined(__x86_64__) printf("0x%llx\n", bswapq( 0x8877665544332211ULL )); #endif printf("0x%x\n", bswapl( 0x44332211ULL )); return 0; }