lzcnt

据传说lzcnt指令”说明书是说计算最前面的1的前面的0的数目”, 然后经过实验发现, “但是现在这个指令好像变成了计算最前面的1的位置”。

对于零, 好像不会修改目标寄存器。

#include<iostream>
using namespace std;
int lzcnt(unsigned int n)
{
    __asm(
    "lzcnt 8(%esp),%eax\n"
    );
}
int main()
{
    cout<<lzcnt(65536)<<endl;
    return 0;
}
发表评论?

1 条评论。

  1. 你确定你的处理器支持?
    这个指令编码时和BSR一样,只是多了个前缀,遇到不支持的处理器,就是你这现象

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/4933QrCode