我使用VS 2015在64位Windows 7上运行。与文档相反
https://msdn.microsoft.com/en-us/library/bb384809.aspx
__ lzcnt()返回31 - (前导零计数)。
即。 __lzcnt(2)= 1;
这是一个已知的错误吗?或者我错过了什么?
答案 0 :(得分:4)
问题是:如果在不支持它的处理器上执行,则lzcnt指令不会生成异常。相反,处理器将lzcnt编码视为BSR(位扫描反转),其前导为忽略前缀值F3。所以你的代码在某些处理器上执行BSR而在其他处理器上执行LZCNT。解决方案是在运行时确认处理器确实支持LZCNT指令。