我需要从两个小端内核(例如 arm)读取/写入设备寄存器(在我的例子中是大端地址空间)。我不想使用中间字节序转换例程(例如 htonl)。我的理解是,现代内核具有可以直接对大端内存进行读/写的指令。
gcc 是否为上述内容提供任何自动生成正确汇编指令的内置函数?
最佳答案
GCC 4.3.0 提供了内置函数:
- 内置函数:int32_t __builtin_bswap32 (int32_t x),它返回字节顺序颠倒。例如。 11223344 将是 0x44332211
- 内置函数:int64_t __builtin_bswap64 (int64_t x) 也类似于 __builtin_bswap32,只是它返回 64 位。
请引用Beware the builtins .
关于c - gcc 是否提供内置函数来读取大端内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590557/