use*_*683 8 c 64-bit gcc endianness
我一直在寻找如何将BSWAP用于64位寄存器的低32位子寄存器的答案.例如,0x0123456789abcdef在RAX寄存器中,我想0x01234567efcdab89用一条指令将其更改为(由于性能).
所以我尝试了以下内联函数:
#define BSWAP(T) { \
__asm__ __volatile__ ( \
"bswap %k0" \
: "=q" (T) \
: "q" (T)); \
}
Run Code Online (Sandbox Code Playgroud)
结果是0x00000000efcdab89.我不明白为什么编译器就像这样.有人知道有效的解决方案吗?