当前位置 博文首页 > jiamianshiye_16_com的专栏:Linux内核学习 第二周 堆栈构造以

    jiamianshiye_16_com的专栏:Linux内核学习 第二周 堆栈构造以

    作者:[db:作者] 时间:2021-06-09 12:15

    一。堆栈的基本原理
    ? ? 1.在linux C程序执行过程中,整个堆栈段都在随着数据的压栈、出栈而增长、消减。?堆栈是C语言程序运行时必须的一个记录调用路径和参数 的空间。并且各种编译器构成的堆栈都不一致。
    ? ? 2.堆栈的寄存器以及图解

    ? ? 需要注意的是,堆栈是从高地址向低地址增长的。每次压栈,都会讲esp指针下移4个字节(32位机是4个字节)
    ????其他跟堆栈操作相关的寄存器:????
    ? ? cs : eip:总是指向下一条的指令地址
    ????? 顺序执行:总是指向地址连续的下一条指令
    ????? 跳转/分支:执行这样的指令的时候, cs : eip的值会 根据程序需要被修改
    ????? call:将当前cs : eip的值压入栈顶, cs : eip指向被 调用函数的入口地址
    ????? ret:从栈顶弹出原来保存在这里的cs : eip的值,放 入cs : eip中

    3.堆栈的构造
    ? ? 堆栈构造时,寄存器的运行流程如下:

    点击(此处)折叠或打开