Exception 导致堆栈异常(x86)

Exception 导致堆栈异常(x86),exception,x86,stack,Exception,X86,Stack,我正试图编写汇编代码以引起堆栈异常,但到目前为止我没有运气。根据AT&T编程器手册,堆栈异常由以下原因之一引起: •堆栈地址不是标准形式的隐含堆栈引用。隐含堆栈 参考包括所有推送和弹出指令,以及任何以RSP或RBP为基础的指令 登记 •尝试加载堆栈段选择器,该选择器引用包含清除字符的段描述符 当前位(描述符P=0)。 •未通过堆栈限制检查的任何堆栈访问 我选择了第一种方法;我正在尝试用非规范形式加载rsp,代码如下: asm volatile("mov $0xAAAAAAAA00000000,

我正试图编写汇编代码以引起堆栈异常,但到目前为止我没有运气。根据AT&T编程器手册,堆栈异常由以下原因之一引起:

•堆栈地址不是标准形式的隐含堆栈引用。隐含堆栈 参考包括所有推送和弹出指令,以及任何以RSP或RBP为基础的指令 登记 •尝试加载堆栈段选择器,该选择器引用包含清除字符的段描述符 当前位(描述符P=0)。 •未通过堆栈限制检查的任何堆栈访问

我选择了第一种方法;我正在尝试用非规范形式加载rsp,代码如下:

asm volatile("mov $0xAAAAAAAA00000000, %%rax;"
                    "orq %%rax, %%rsp;"
                    "push %%rax;" : : : );
GDB只是说不能寻址内存,一切都会中断,而不是异常。有人有什么想法吗?如果没有人知道我如何使用第三个条件导致异常?我不知道“堆栈限制检查失败”是什么意思。谢谢

 asm(
    "\n"
    "MYLOOP:\n\t"
    "pushq %rbp\n\t"
    //"popq %rbp\n\t"
    "jmp MYLOOP\n\t"
    );

简单的堆栈溢出。取消对popq指令的注释,使无限堆栈推送/弹出循环消耗100%的cpu内核。

最简单的方法可能是反复调用自己,直到堆栈溢出。看见