c++ - gcc的 "__builtin_popcount"是怎么工作的?

标签 c++ gcc

我想知道“__builtin_popcount”的内部工作原理。

据我所知,它对不同的 cpu 有不同的工作方式。

最佳答案

与许多其他内置指令类似,如果 objective-c PU 上有可用指令,它将转换为特定的 CPU 指令,从而大大加快应用程序的速度。

例如,在 x86_64 上它转换为 popcntl ASM 指令。

可以在 GCC 页面上找到更多信息:https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

同样值得注意的是,只有当 gcc 运行时带有 march 标志才能看到实际的加速,该标志针对支持该指令的架构或专门启用它的参数,-mpopcnt。如果没有其中任何一个,gcc 将恢复为通过位操作进行通用位计数。

关于c++ - gcc的 "__builtin_popcount"是怎么工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57150666/

相关文章:

c++ - 在 C++ 中运行时创建 dll

C++模板类继承

c - 为什么 C 静态函数不进入文本部分而是进入 rodata 部分?

c++ - constexpr 构造函数在 GCC 在编译时评估时给出不同的结果

linux - Ubuntu/usr/bin/ld : cannot find -lsasl2 while installing monary

编译器将 printf 更改为 puts

C++:如何打印 vector vector 中的所有元素

c++ - 允许调试器 Hook 外部启动的应用程序实例?

c++ - 如何按值对 **boost::unordered_map** 进行排序并按该顺序仅返回键?

c++ - Asio C++ 库 : asio/detail/config. hpp:没有这样的文件或目录