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