一。堆栈的基本原理
? ? 1.在linux C程序执行过程中,整个堆栈段都在随着数据的压栈、出栈而增长、消减。?堆栈是C语言程序运行时必须的一个记录调用路径和参数 的空间。并且各种编译器构成的堆栈都不一致。
? ? 2.堆栈的寄存器以及图解
? ? 需要注意的是,堆栈是从高地址向低地址增长的。每次压栈,都会讲esp指针下移4个字节(32位机是4个字节)
????其他跟堆栈操作相关的寄存器:????
? ? cs : eip:总是指向下一条的指令地址
????? 顺序执行:总是指向地址连续的下一条指令
????? 跳转/分支:执行这样的指令的时候, cs : eip的值会 根据程序需要被修改
????? call:将当前cs : eip的值压入栈顶, cs : eip指向被 调用函数的入口地址
????? ret:从栈顶弹出原来保存在这里的cs : eip的值,放 入cs : eip中
3.堆栈的构造
? ? 堆栈构造时,寄存器的运行流程如下:
点击(此处)折叠或打开