簡體   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