2017-08-23 46 views
1

在一個函數的開始有這樣的結構:大會啓動功能的x86-64

0x7ffff7e47a10: test $0xf,%spl 
0x7ffff7e47a14: je  0x7ffff7e47a1b 
0x7ffff7e47a1a: int3 

什麼是標誌0xfspl如果它不這樣做中斷的目的是什麼? 就像「堆棧一切正常」?

回答

5

這將檢查堆棧是否對齊到16個字節,如果不是,則中止程序。如果棧被對齊到16個字節,則%rsp和擴展%spl的最少四位是清楚的。這是test $0xf,%spl測試。

+0

@Toby請不要「糾正」不是錯誤的錯誤。請在將它編輯爲不太正確的「if」之前查找單詞「iff」。 – fuz

+0

對不起,我想如果它是一個代碼構造,它將被格式化(它不是英文AFAIK?)。也許你可以在答案中澄清更多,因爲「iff」谷歌搜索有很多不同的結果。我接受你的觀點,但是不熟悉「iff」的人也會認爲它是一個錯字,所以不會理解它的價值 – Toby

+2

@Toby [iff](http://en.wiktionary.org/wiki/iff)是一個非常好的英文單詞。 – fuz