2
我正在學習彙編語言,遇到一個問題,我甚至不知道如何去問Google。我正在使用gdb來調試簡單的c程序。什麼是彙編cmp指令完全比較?
我有下面的代碼:
cmp eax,DWORD PTR [rbp-0xc]
jle 0x400cc2
打破CMP指令,我檢查值進行比較:
p/d $eax // 1000
x/d $rbp-0xc //-24
所以我認爲,該跳就不會發生。但是在進入下一步之後 - 我可以看到ZF標誌已設置。 有人可以用簡單的話來解釋嗎?
嗯,我很困惑。我嘗試過幾次,而且總是一樣的。在cmp'$ eflags = [IF]之前,在si命令之後'$ eflags = [PF ZF IF]' – nibsa
用完整的gdb日誌編輯你的問題。另外,使用'x/wd'來確保你正在打印4個字節的整數。請注意,1000是'e8 03 00 00',-24是'e8 ff ff f',所以如果只打印一個字節,即使內存爲1000,也可能得到-24的結果。 – Jester
Omg,'x/wd $ rbp-0xc'打印1000.現在一切都合情合理。我不熟悉gdb,我很難問谷歌這樣的具體問題。謝謝! – nibsa