Intel x86 Assembly& Microarchitecture 将进位标志移入寄存器
示例
背景
如果Carry(C)标志保存您要放入寄存器的值,那么天真的方法是执行以下操作:
mov al, 1
jc NotZero
mov al, 0
NotZero:使用“sbb”
为了避免跳转,一种更直接的方法是使用“借借相减”:
sbb al,al ; Move Carry to al
如果C为零,al则将为零。否则为0xFF(-1)。如果需要0x01,请添加:
and al, 0x01 ; Mask down to 1 or 0
优点
大约相同的大小
少两个或一个指令
没有昂贵的跳
缺点
对于不熟悉该技术的读者来说是不透明的
它改变了其他标志
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短