汇编语言很容易实现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 L2jmp 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相关推荐

  1. 一道PHP题引出的“短路求值”

    今天群里有个人问了一个问题,代码如下: $a = 3; $b = 2; if ($a = 2 || $b = 5) {     ++$a; } echo $a; 说代码段的执行的结果为1,问大家$a的 ...

  2. C语言中短路求值问题

    短路现象(一) 以下表达式就是短路现象的其中一种 x & y & z; 如果x为假,直接返回假:若x为真,则执行y:只有x和y都为真才执行z. 例子 我们来看以下代码,求想x, y, ...

  3. python逻辑运算符or的短路求值特性_[Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑...

    好吧题目非常easy.可是有些细节还是挺有意思的. 题目是:计算今年是否是闰年,推断闰年条件,满足年份模400为0,或者模4为0可是模100不为0 答案是这种: import time #计算今年是否 ...

  4. python中and和or的惰性求值特点_惰性求值和yield-Python

    惰性求值 惰性求值(Lazy evaluation)是在需要时才进行求值的计算方式.表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值. 除可以得到性能的提升(更小的内存占用)外,惰性 ...

  5. java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)

    数据结构之后缀表达式求值(java实现) 前记 ​ 今天在刷leet code的时候刷到了一道题,后缀表达式(逆波兰表达式)求值,我花了一会儿写了一下它的解法.但是今天我不谈什么是后缀表达式,有兴趣的 ...

  6. python惰性求值例子_惰性求值和yield-Python

    惰性求值 惰性求值(Lazy evaluation)是在需要时才进行求值的计算方式.表达式不在它被绑定到变量之后就立即求值,而是在该值被取用的时候求值. 除可以得到性能的提升(更小的内存占用)外,惰性 ...

  7. C++基础知识(二)--左值右值--逻辑表达式求值优化--逗号运算符与表示式--输入输出格式控制...

    :一.C++左值右值概念 左值:c++将变量名代表的单元称为左值,而将变量的值称为右值,左值必须是内存中可以访问且可以合法修改的对象,因此只能是变量名,而不能是常量或表达式.即左值可以寻址. 右值:将 ...

  8. 表达式求值负数乘负数_为什么现在很多期权的时间价值都为负数?

    作者:一厢财经 来源:网络 缠中说禅的确是炒股人的圣经,无数人靠着模仿学习他,通过缠论分析股票,最后实现了财务自由,我的一个朋友,学习缠论后打板,最高纪录是22个涨停,有兴趣的同学可以点击下面链接购买 ...

  9. “短路求值(Short-Circuit Evaluation)

    // 逻辑与和逻辑或操作符总是先计算其做操作数,只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解其右操作数. function aa() {if (null) { console.log( ...

最新文章

  1. mysql触发器菜鸟_mysql触发器学习
  2. linux上使用strace查看C语言级别的php源码【一种方法】
  3. PHP中的PathInfo
  4. php文件开放下载安全,php实现文件安全下载
  5. 【学习笔记】〖ASP.NET〗连接字符串的函数
  6. java的环境变量classpath中加点号 ‘.’ 的作用
  7. java 静态与非静态之间的访问规则简述
  8. linux java解压文件怎么打开,java linux 解压zip文件怎么
  9. 群晖系统硬盘损毁的修复
  10. 关于Release版除法反汇编的小结
  11. 狂神HTML5学习笔记
  12. android minui fb显示相关函数
  13. 批量移动文件到以时间建立文件夹里
  14. jQ选择器(子元素 后代元素 兄弟元素 相邻元素)
  15. crm客户管理系统如何助力企业销售管理
  16. 单纯形法(simplex algorithm)
  17. Zookeeper Paxos算法 一致性协议
  18. 照片透明背景抠图怎么做?试试这几种抠图方法
  19. 拒绝白嫖,著名开源项目作者暴力删库,导致账号被封!
  20. C语言程序设计(三)高级特性

热门文章

  1. Python爬虫 --爬取京东酒店旅行信息
  2. 疫情控制住了,公司却倒闭了!
  3. 【中断】异常和中断的关系、异常向量表和中断向量表的关系
  4. linux系统之时间同步设置
  5. wifi 的几种加密方式
  6. 我说CMMI之五:CMMI 4个等级的区别
  7. 推荐这三款软件让你实现图片去雾化?
  8. 谷歌将投资10亿美元在旧金山湾区新建约2万套住房
  9. github clone 代码到本地全步骤
  10. 从redis中取值 然后通过list进行分页查询