如何比較到輸出介紹完了之後,現在就來計算迴圈次數到達後的程式狀態,我們從RBP-0x4等於4的時候開始。
這邊IDA比較多資料,所以我們慢慢來看,可以看到右下角的Stack view在7FFFFCC18的地方,在21646C的前面就是迴圈的次數了。
接下來當RBP-0x4等於5時,我們預期ZF為1、CF為0以及SF為0
我們順便看比較前的EFLAGS
做完比較後
可以很明顯地看到,與我們的期望一樣,只有ZF為1,這就說明當CMP做比較時是相減的,而5-5為0,在運算後的EFLAG偵測到運算結果為0而ZF為1。
但下一步要做的是JLE因此相等也會轉跳,所以再經過一輪後RBP-0x4還會增加為6,這個時候我們預期EFLAGS在ZF、CF、SF都會是0,然後程式不會繼續跳轉,而是繼續執行下去。
當RBP-0x4為6時,EFLAGS的狀態。
可以發現如我們預期一樣EFLAGS在ZF、CF、SF都會是0
接著因為6已經大於5了,因此脫離了JLE,所以程式會繼續往下執行。