如标题中所述,我在 x86 汇编上遇到了 BEXTR(位提取)指令,但我似乎无法理解它是如何工作的。
在网上找了一段时间后,我什至找到了一个假定的 C 等价物 (src >> start) & ((1 << len) -1)
我似乎也不太明白。
任何人都可以向我解释 BEXTR 指令的工作原理吗?位是如何提取的?
最佳答案
图片可能会有所帮助。假设起始位是 5,长度是 9。那么如果我们有
Input : 11010010001110101010110011011010 = 0xd23aacda
|-------|
\
\
\
v
|-------|
Output: 00000000000000000000000101100110 = 0x00000166
所需的位 block 进入输出的最低有效位,输出的其余位变为 0。
关于assembly - x86中的BEXTR指令是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70208751/