1.傳回一個布爾型的彙編
源碼: int var4, var8; return var4>=var8; 反彙編碼: .text:00401084 mov edx, [ebp+var_8] .text:00401087 cmp [ebp+var_4], edx .text:0040108A sbb eax, eax .text:0040108C inc eax
cmp是比較指令, cmp的功能相當于減法指令,隻是不儲存結果。cmp指令執行後,将對标志寄存器産生影響。其他相關指令通過識别這些被影響的标志寄存器位來得知比較結果。
cmp ax,bx的邏輯含義是比較ax,bx中的值。如果執行後: ZF=1則AX=BX ZF=0則AX!=BX CF=1則AX<BX CF=0則AX>=BX CF=0并ZF=0則AX>BX CF=1或ZF=1則AX<=BX
由此可知,
if(var4>=var8) cf=0; if(var4<var8) cf=1;
SBB:帶借位減法, 格式:SBB DST,SRC, 執行的操作:(DST)←(DST)-(SRC)-CF,其中CF為進位的值
是以分情況得到以下代碼:
if(var4>=var8) cf=0; if(var4<var8) cf=1; return eax-eax-cf+1; 是以翻譯以下就是: if(var4>=var8) return 1; if(var4<var8) return 0; 相當于 return var4>=var8;