zoukankan      html  css  js  c++  java
  • 20135324-信息安全系统设计基础第五周学习总结

    学习重点:

    一、栈帧结构

    机器用栈来传递过程参数,存储返回信息、保存寄存器用于以后恢复,以及本地存储。为单个过程分配的那部分栈称为栈帧。

    %ebp为帧指针,而寄存器%esp为栈指针。当程序执行时,栈指针可以移动,因此大多数信息的访问都是相对于帧指针的。

    Q的栈帧从保存的帧的值例如%esp开始,后面是保存寄存器的值。这个过程Q也用栈来保存其他不能放在寄存器中的局部变量。

    二、转移控制

    call指令:指明被调用过程起始的指令地址同跳转一样,调用可以直接也可以间接。

    返回地址:在程序中紧跟在call后面的那条指令地址,当调用过程返回时,执行会从此处继续。

    ret指令:从栈中弹出地址,并跳转到这个位置。

    当使用这个指令时,可以使栈做好准备,栈指针要指向前面call指令存储返回地址的位置。

    三、寄存器使用惯例

    寄存器使用惯例:寄存器%eax、%edx和 %ecx被划分为调用者保存寄存器。当过程p调用Q时,可以覆盖这些寄存器,而不会破坏任何批所需要的数据

                          寄存器%ebx、%esi和%edi被划分为调用者保护寄存器,就是Q必须在覆盖这些寄存器的值之前,先把他们保存到栈中并在返回前恢复,因为以后p可  能会用到。

    四、过程示例

    swap_add编译的代码包括:“建立”——初始化栈帧;“主体”——执行过程的实际运算;“结束”——恢复栈的状态,以及过程返回。

    五、递归过程

    递归调用一个函数等于调用其他函数是一样的,但是栈规则提出了一种机制,每次函数调用都有它自己私有的状态信息存储:包括保存的返回位置、栈指针和被调用者保存寄存器的值。

    六、使用GDB调试

    实验楼 《深入理解计算机系统》 实验四

    将c 转变为汇编语言:

  • 相关阅读:
    URL
    VI,CI,UI
    ubuntu优化使用
    Django入门之自定义页面
    python3 连接SQLserver
    Python3 捕捉异常
    python3 异常处理
    Django入门
    较大型站立会议(交付前两天)--张永组-2014-04-15
    站立会议-2014-04-14
  • 原文地址:https://www.cnblogs.com/yswysw/p/4867562.html
Copyright © 2011-2022 走看看