ARM位字段提取?

时间:2011-12-03 08:57:10

标签: arm bit-manipulation

有人可以解释这条指令的作用并将其翻译成C吗?

ubfx.w          r3, r11, #0xE, #1

根据ARM参考手册,它执行“有符号和无符号位字段提取”,但我对所有这些按位的东西都不好。

1 个答案:

答案 0 :(得分:6)

UBFX只从源寄存器中提取一个位域,并将其放在目标寄存器的最低有效位中。

一般形式是:

UBFX dest, src, lsb, width

在C中将是:

dest = (src >> lsb) & ((1 << width) - 1);

你给出的例子的C等价物是:

r3 = (r11 >> 14) & 1;

即。如果r11的第14位置位,r3将为1,否则为0。

请参阅:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cjahjhee.html