如何在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&gt; = B)||(C&lt; D))?, OR函数,将会应用哪些更改?我看到程序集也有逻辑运算符(AND,OR,XOR),在这种情况下我们可以使用它们吗? 你能描述两种情况的例子吗?
答案 0 :(得分:3)
如果我有
怎么办?if((A >= B) || ( C < D))
应用De Morgan's law后,您可以采用与原始代码相同的方法:
if(!((A < B) && ( C >= D)))
我看到程序集也有逻辑运算符(AND,OR,XOR),在这种情况下我们可以使用它们吗?
在这种情况下,你可以。但是,它不再等同于您的C代码,因为||
和&&
运算符使用short-circuit evaluation。