我和几个朋友在摆弄一个很奇怪的问题。我们在应用程序中的一个小汇编程序部分(用来加快进程)中遇到了一次崩溃。这个错误是由修改堆栈指针而不是在最后重置它造成的,它看起来如下所示:mov ebp, esp
; do stuff here including sub:为什么这在Windows中有效呢?当我们将应用程序移植到Linux<em
堆栈模型如下。单词下面的数字是堆栈中变量的字节数。因此,如果我想重写RET来跳过我想要的语句,我会计算出从buffer1到RET的偏移量是8+4=12。buffer2 buffer1 BSP RET a b c我想跳过x=1;语句,让printf()在屏幕上输出我用以下命令编译代码:并在gdb中运行它:
gdb .=