gcc是否提供内置读取大端内存?

时间:2015-04-12 14:31:45

标签: c gcc endianness built-in

我需要从两个小端核(例如arm)读/写设备寄存器(在我的情况下是在大端地址空间中)。我不想使用中间端转换例程(例如htonl)。我的理解是现代内核有指令可以直接读取/写入大端内存。

gcc是否为上述内容提供了自动生成正确汇编指令的内置函数?

1 个答案:

答案 0 :(得分:4)

GCC 4.3.0提供了内置功能:

  1. 内置函数:int32_t __builtin_bswap32(int32_t x),它返回逆转的字母顺序。例如。 11223344将为0x44332211
  2. 内置函数:int64_t __builtin_bswap64(int64_t x) 也类似于__builtin_bswap32,除了它返回64位。
  3. 请参阅Beware the builtins