例如,检查r8是否均匀
这给出了答案
MOVS R2,R8,LSR#1
将lsb移动flag in = 0>即使= 1>奇数
我没有得到这个部分。
例如,小数为0..0 0111中的十进制值7,右转1,我们得到0..00011。随身携带的位置表示最正确的位?
另一种方法是使用mask?
如果低位为0,则基本2数字均匀(可除以2)。完全相同的原因,如果低数字为0,则基本数字10个数字可将10个数字除外。<<<<<</p>
移动将最后一个位移到C标志中,因此您可以通过查看C标志来判断R8
是否是。如ARM文档所说:
如果指定了s,这些说明更新n和z标志 根据结果。
如果移位值为0,则C标志不受影响。否则,C 标志已更新为最后一个位移出。
但是,是的,测试ODD/偶数的正常方法是tst r8, #1
根据低位设置Z标志。因此,beq r8_was_even
或bne r8_was_odd
或您想使用Z标志的其他任何事情。
如果您可以使用右移整数结果(或其在Z
中的零/非零状态),则具有偏移的movs
(aka lsrs
)是一次获得x/2
和x&1
结果的有效方法。