小编use*_*683的帖子

如何BSWAP低32位的64位寄存器?

我一直在寻找如何将BSWAP用于64位寄存器的低32位子寄存器的答案.例如,0x0123456789abcdef在RAX寄存器中,我想0x01234567efcdab89用一条指令将其更改为(由于性能).

所以我尝试了以下内联函数:

#define BSWAP(T) {  \
    __asm__ __volatile__ (  \
            "bswap %k0" \
            : "=q" (T)  \
            : "q" (T)); \
}
Run Code Online (Sandbox Code Playgroud)

结果是0x00000000efcdab89.我不明白为什么编译器就像这样.有人知道有效的解决方案吗?

c 64-bit gcc endianness

8
推荐指数
1
解决办法
5006
查看次数

标签 统计

64-bit ×1

c ×1

endianness ×1

gcc ×1