C程序运行时内存结构分析.docxVIP

  • 3
  • 0
  • 约4.09千字
  • 约 11页
  • 2019-09-29 发布于湖北
  • 举报
C程序运行时内存结构分析 时间:2015-11-24 22:25????点击:37次 实验知识 静态变量存储在静态存储区,局部变量存储在动态存储区(栈),代码存放在代码区 寄存器,EBP指向栈底,ESP指向栈顶,EIP指向正在执行指令的下一条指令,三个寄存器中保存的都是地址,32位系统,地址为4个字节即dword 所有写在函数定义里面的语句都编译成指令(驱动CPU) 实验代码 #include stdio.h int?fun(int?a,?int?b); int?m = 10; int?main() { ????int?i = 4; ????int?j = 5; ????m = fun(i, j); } int?fun(int?a,?int?b) { ????int?c = 0; ????c = a + b; ????return?c; } 这段代码包含两个函数,因此可以测试函数调用,此外还包含了静态变量、局部变量、返回值等 实验测试 测试工具:VC6.0 源代码及对应的汇编如下 寄存器及内存状态如下 EBP栈顶初始值为0018FF84h,ESP初始为0018FF48h ESP和EBP在栈中的作用 在每个函数最开始的地方有两条语句 push ebp mov ebp,esp 在函数返回前也有两条语句 mov esp,ebp pop ebp 每运行一个函数就新开一段栈空间,所谓的开栈

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档