我想了解“ __builtin_popcount”的内部工作原理。
据我了解,它对不同的cpu的工作方式不同。
答案 0 :(得分:6)
与许多其他内置函数类似,如果目标CPU上有可用的指令,它将转换为特定的CPU指令,从而大大加快了应用程序的速度。
例如,在x86_64上,它转换为popcntl
ASM指令。
其他信息可在GCC页面上找到:https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
还值得注意的是,只有在使用march
标志运行gcc时才能看到实际的加速,该标志的目标体系结构支持该指令或专门启用该指令的参数-mpopcnt
。如果没有这些,gcc将通过位操作恢复为通用位计数。