概述
汇编语言很容易实现AND运算符的复合布尔表达式。考虑下面的伪代码,如果a1小于b1则不需要关心b1是否大于c1,这种思路就叫短路求值。
if (a1 > b1) AND (b1 > c1)
X = 1
end if
短路求值在汇编中有以下两种方法:
cmp a1,b1
ja L1
jmp next
L1: cmp b1, c1
ja L2
jmp next
L2:
mov X, 1
next:
cmp a1,b1
jbe next
cmp b1,c1
jbe next
mov X, 1
next:
第二种汇编方法能减少29%的代码量。
当复合表达式包含的子表达式是用 OR 运算符连接的,那么只要一个子表达式为真,则整个复合表达式就为真。也是运用短路求值的思路,只要第1个条件满足则无需理会后面有多少个条件以及它们的结果。
if (a1 > b1) OR (b1 > c1)
X = 1
cmp a1, b1
ja L1
cmp b1, c1
jbe next
L1: mov X, 1
next:
最后
以上就是拉长冰棍为你收集整理的x86汇编_短路求值-AND / OR运算符_笔记_39的全部内容,希望文章能够帮你解决x86汇编_短路求值-AND / OR运算符_笔记_39所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复