我想知道“__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/