想用汇编写一个类似C++里的bitset的功能,检测mem开始第N比特的状态。找到一个bt指令,但长度N有限制,只能16以内。所以必须先把X = N/8 (SHR N,3), Y = N % 8 (AND N,7),再bt [mem+X], Y。
感觉很累赘。能不能一个指令搞定的?
------解决方案--------------------------------------------------------
看了下 bt 指令的说明,没有这样的限制吧:
The offset operand then selects a bit position within the range -2^31 to 2^31 - 1 for a register offset and 0 to 31 for an immediate offs.
要范围大,用寄存器来指定偏移而非立即数。