匯編指令之set


匯編set語句:

實現無分支比較, 不斷流水線

39383E46  |.  83F9 09       cmp ecx,0x9
39383E49  |.  0F97C0        seta al

cmp 比較兩個操作數,結果保存在FLAG寄存器中(同sub運算,不同在於不影響操作數, 只影響flag寄存器)

seta 的 a 表示無符號數的 above 大於,即 (和條件跳轉語句同理)

如果 ecx > 9 ,則把al寄存器的值置1

否則置0

 

cmp $eax,%edx
setb $cl

  

cmp 比較兩個操作數,結果保存在FLAG寄存器中

setb 的 b 表示無符號數的 below 小於,即 (和條件跳轉語句同理)

如果 %eax < %edx ,則把cl寄存器的值置1

否則置0

 

Ps:是值置1,而不是寄存器的某一位

當然 %eax < %edx 是從我們人的角度來看的

對計算機而言,要看 FLAG 寄存器的標志位

無符號,小於,則看CF足矣

如果CF=1 且 ZF=0 則不夠減,則小於,則寄存器 cl 置1

如果CF=0 且 ZF=0 則夠減,則不是小於,則寄存器 cl 置0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM