x86汇编_短路求值-AND / OR运算符_笔记_39

本文探讨了短路求值的概念,特别是在汇编语言中如何实现AND和OR运算符的复合布尔表达式。通过示例代码,解释了如何通过短路求值来优化代码,减少不必要的计算步骤。第一种方法适用于AND运算,第二种方法减少了29%的代码量。同时,也展示了在OR运算中的短路求值应用。
摘要由CSDN通过智能技术生成

汇编语言很容易实现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:

在给定的命令中,"sudo ln -s /usr/lib/x86_64-linux-gnu/libmpfr.so.6 /usr/lib/x86_64-linux-gnu/libmpfr.so.4" 是用于创建一个软链接的命令。软链接是一个指向另一个文件或目录的引用,类似于快捷方式。在这个命令中,我们将"/usr/lib/x86_64-linux-gnu/libmpfr.so.6"软链接到"/usr/lib/x86_64-linux-gnu/libmpfr.so.4"上。这样,当系统在使用"/usr/lib/x86_64-linux-gnu/libmpfr.so.4"时,实际上会访问到"/usr/lib/x86_64-linux-gnu/libmpfr.so.6"这个文件。因此,这个命令的目的是将"libmpfr.so.6"的功能扩展到"libmpfr.so.4"上,以便于程序或系统在使用这个库时的兼容性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [No rule to make target &#39;/usr/lib/x86_64-linux-gnu/libGL.so](https://blog.csdn.net/ba99783/article/details/101559761)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [undefined](undefined)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值