2020-2021-1 20209308《Linux内核原理与分析》第二周作业 实验一:反汇编一个c程序
-
过程
- 1.编写简单的c语言程序
- 2.反汇编指令gcc –S –o main.s main.c -m32
- 3.将无用信息删除后的最后结果 -
分析
- 模拟堆栈 -
总结:计算机在工作时,给每个函数执行时先将函数的地址推入底层堆栈,再将足够的连续的一片内存分给函数程序,函数所需的参数在函数被调用之前就存入栈,方便时常的访问。栈中内存从高地址运行至低地址,一行一行直至函数运行完,或者执行call的指令调用了其他的函数,通过ret指令返回到主函数,最后通过leave指令释放栈。在栈执行中会使用寄存器来保存各种数据或者数据中的地址,eax为累加寄存器,ebx为基址寄存器,ecx计数寄存器,edx数据寄存器;也有专门储存指令的寄存器eip,和堆栈的指针寄存器esp,ebp。