c - gcc 是否提供内置函数来读取大端内存?

标签 c gcc endianness built-in

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

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

最佳答案

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 位。

请引用Beware the builtins .

关于c - gcc 是否提供内置函数来读取大端内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590557/

相关文章:

c - 在 C 中使用编写的跳转表或 switch 语句是否更快?

vba - 在VBA中将big-endian转换为little-endian,反之亦然

c - 错误: result of comparison against a string literal is unspecified (use strncmp instead) and Check50 showing error on credit problem

C:如果语句不起作用

C++:使用 longjmp 和 setjmp 安全吗?

gcc - 如何强制gcc预处理程序保留空白?

python - 安装 scikit : gcc-4. 2 未找到,使用 Clang 代替

c++ - 如何将小字节序格式的QByteArray转换为无符号长整数

java - Java 中接收数据包的字节顺序是什么?

c - GCC 编译非常慢(大文件)