gpt4 book ai didi

assembly - 关于 bsr 和 lzcnt 的困惑

转载 作者:行者123 更新时间:2023-12-04 04:59:19 25 4
gpt4 key购买 nike

我对这两个指令有点困惑。首先让我们丢弃扫描值为 0 和 undefined/bsr 或 bitsize/lzcnt 结果时的特殊情况 - 这种差异很明显,而不是我的问题的一部分。

让我们取二进制值 0001 1111 1111 1111 1111 1111 1111 1111
根据英特尔的规范,lzcnt 的结果是 3

根据英特尔的规范,bsr 的结果是 28
lzcnt计数,bsr返回距位 0(即 lsb)的索引或距离。

两个指令怎么可能相同,怎么可能 lzcnt被模拟为 bsr如果 CPU 上没有可用的 BMI?或者在 bsr 的情况下是位 0 msb?英特尔规范中的两个“代码操作”也不同,一个从左边开始计数或索引,另一个从右边开始。

也许有人可以对此有所了解,没有 BMI/lzcnt 我就没有 CPU测试是否回退到 bsr 的指令使用相同的结果(因为扫描值 0 的特殊情况永远不会发生)。

最佳答案

LZCNT给出前导零位的数量。 BSR给出最高有效 1 位的位索引。因此,对于非零情况,它们有效地执行相同的操作,只是结果的解释不同。因此,您只需减去 BSR结果来自 31 以获得与 LZCNT 相同的行为,即 LZCNT == (31 - BSR) .

关于assembly - 关于 bsr 和 lzcnt 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com