【ARM 嵌入式 编译系列 5 -- GCC 内建函数 __builtin 介绍】

文章目录

    • 什么是GCC内建函数?
      • GCC 常见内建函数
      • GCC内建函数使用示例

什么是GCC内建函数?

GCC提供了一些专门的功能,用于访问特定的硬件指令或者实现特定的优化,它们被称为"__builtin"函数。

这些函数在语法上看起来像是普通函数,但在编译阶段会被编译器直接转换为一些特定的机器指令,而不是像普通函数那样调用通用的函数调用协议。

GCC提供的__builtin函数非常多,包括了数学函数字符串操作内存操作位操作类型转换计数前导零/尾零CPU指定指令等等功能。

使用__builtin函数可以在不牺牲可读性的同时获得更高的性能。但是请注意,由于这些函数直接对应特定的硬件指令,所以在不同的硬件和操作系统上,它们的效果和性能可能会有所不同。因此,在编写依赖于__builtin函数的代码时,需要特别注意移植性的问题。

要在GCC中使用__builtin函数,只需要在代码中直接调用即可,无需包含任何头文件。

GCC 常见内建函数

GCC编译器提供了很多内建函数,这些函数可以帮助我们进行一些特殊的操作,以下是一些常见的GCC内建函数:

  • __builtin_expect:提供编译器关于一个条件判断表达式结果的预期值,用于优化代码, 见likelyunlikely的实现;

  • __builtin_clz:计算无符号整数的前导零的数量;

  • __builtin_ctz:计算无符号整数的尾随零的数量;

  • __builtin_popcount:计算二进制表示中1的个数;

  • __builtin_types_compatible_p:在编译期检查两个类型是否兼容;

  • __builtin_offsetof:获取结构体成员在结构体中的偏移量;

你可能感兴趣的:(#,ARM,BSP,编译系列介绍,gcc内建函数,__builtin_clz,__builtin_ctz,__builtin_expe,builtin_prefetc)