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