20145306《信息安全系统设计基础》第5周学习总结
教材学习中的问题和解决过程
栈和栈帧
栈: 栈底指针和栈顶指针,栈底指针位于高地址端,栈顶指针位于低地址端。 栈是一种特殊的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。 存储原则是先进后出。 对栈的插入与删除操作中,不需要改变栈底指针。 栈是由高地址向低地址延伸的。 栈帧——则是相对某个函数而言,调用栈就是正在使用的栈空间,由多个嵌套调用函数所使用的栈帧组成。 栈帧表示程序的函数调用记录,而栈帧又是记录在栈上面。(为单个过程分配的那部分栈称为栈帧) 每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。因此栈作用就是用来保持栈帧的活动记录(即函数调用)。
关于过程
调用者caller,被调用者callee。 当caller调用callee时,caller的返回地址被压入栈中,形成caller栈帧的末尾。 返回地址:就是当程序从callee返回时应该继续执行的地方(指令的地址),当被调用过程返回时,程序会从此处继续执行。 callee的栈帧从保存的帧指针的值(%ebp)开始,其后即为其保存的寄存器的值,和callee调用其他过程的参数。
将.c文件编译为汇编语言:
本周代码托管链接
其他(感悟、思考等,可选):
第三章的内容比较多,看得内容比较少。
本周主要是对于汇编的学习,栈针还是没有看懂,有点不太好理解,还需要接下来的不断思索理解。
时间: 2024-10-20 02:30:20