大会启动功能的x86-64

问题描述:

在一个函数的开始有这样的结构:大会启动功能的x86-64

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

什么是标志0xfspl如果它不这样做中断的目的是什么? 就像“堆栈一切正常”?

这将检查堆栈是否对齐到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