[英]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.