繁体   English   中英

汇编中的高级if语句

[英]High level if statement in Assembly

如何在Assembly中编写逻辑运算符if语句? 例如在C中我们有AND和OR逻辑函数,比方说:

用C写的

if((A >= B) && ( C < D)) {
   A = A+1;
   C = C*C;
 }else
C = C - 1;
A = C;

我不知道它是否正确但是在汇编时我会用这种方式翻译它:

在大会中翻译

if:   cmp RA,RB
      jl else
      cmp RC,RD
      jge else
      inc RA
      mul RC,RC
      jmp endif
else: dec RC
      mov RA,RC
endif:

我需要你的帮助,如果我有if((A> = B)||(C <D))?, OR函数,将会应用哪些更改? 我看到程序集也有逻辑运算符(AND,OR,XOR),在这种情况下我们可以使用它们吗? 你能描述两种情况的例子吗?

如果我有if((A >= B) || ( C < D))怎么办?

在应用De Morgan定律后,您可以采用与原始代码相同的方法:

if(!((A < B) && ( C >= D)))

我看到程序集也有逻辑运算符(AND,OR,XOR),在这种情况下我们可以使用它们吗?

在这种情况下,你可以。 但是,它将不再等同于您的C代码,因为|| &&运营商使用短路评估

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM