【发布时间】:2022-01-09 11:50:38
【问题描述】:
正如标题中提到的,我在 x86 程序集上遇到了 BEXTR(位提取)指令,但我似乎无法理解它是如何工作的。
在网上找了一段时间后,我什至发现了一个假定的 C 等效 (src >> start) & ((1 << len) -1),我似乎也无法理解。
谁能向我解释 BEXTR 指令的工作原理?比特是如何提取的?
【问题讨论】:
-
这个公式几乎说明了它的作用。它从
start开始提取源的length位。 -
如果您不理解移位和掩码等价物,也许英特尔手册的位范围表示法会有所帮助:felixcloutier.com/x86/bextr。但实际上你应该学习基本的位操作,比如 2 的幂减一 => 位掩码。有关介绍,请参阅catonmat.net/low-level-bit-hacks。
标签: assembly x86 bit-manipulation