2013-03-08 40 views
5

我正在跟蹤一些x86代碼的任務,我想知道「cmpl」究竟做了什麼以及如何預測「jne」是否會被滿足。x86 cmpl和jne

80484bf: 83 7d f0 07    cmpl $0x7,-0x10(%ebp) 
80484c3: 75 16     jne 80484db 

此外,這使用英特爾語法。

謝謝。

+8

順便說一句:這是AT&T語法。 – 2013-03-08 08:09:31

回答

7

CMPL從$ 0x7的減去-0x10(%EBP),並修改標誌:AF CF PF SF ZF的。

  1. 如果-0x10(%EBP),這是你的函數參數之一,等於爲0x7則標誌ZF設置。
  2. JNE80484分貝意味着,如果兩個被比較的數字是不同的(ZF = 0),則跳轉到80484分貝

要summerize,代碼等同於:

compare A to B 
jump into 80484db if they are different. 
+0

非常感謝。所以如果-0x10(%ebp)減去$ 0x7不等於零,那麼ZF被設置爲0?或者是周圍的其他方式? – Richarizard 2013-03-08 08:42:36

+1

不客氣。是的,如果-0x10(%ebp)減去$ 0x7不相等,則ZF被設置爲0 – 2013-03-08 08:54:42