8_高级过程讲述.pptVIP

  • 20
  • 0
  • 约7.67千字
  • 约 54页
  • 2017-03-03 发布于湖北
  • 举报
8_高级过程讲述

汇编语言 lybliu@cuit.edu.cn, QQ (学校主页?教学平台) 第8章 高级过程 8.2 堆栈帧(stack frame) 8.4 INVOKE,ADDR等伪指令 8.2 堆栈帧(堆栈框架) CPU中用到堆栈的地方很多 通过PUSH和POP指令利用堆栈保存和恢复寄存器、变量等 CALL利用堆栈存放返回地址供RET指令使用 使用堆栈传递子过程参数 利用堆栈实现局部变量 堆栈帧的使用步骤 通常堆栈帧的创建步骤如下: 如果有需传递的参数,将各参数依次用PUSH压栈 通过CALL调用子过程,此指令自动将返回地址压栈 子过程开始,将EBP压栈 把ESP的值传给EBP,后续指令通过EBP访问堆栈空间,可以访问子过程的参数 如果有局部变量,则将ESP减去一个值,为局部变量保留空间。这些空间一样可以通过EBP来访问。 再对其他需要保存的寄存器压栈 堆栈代码示例 AddTwo proc Push ebp Mov ebp,esp Mov eax,[ebp+12] Add eax,[ebp+8] Pop ebp Ret AddTwo endp 8.2.2 寄存器参数的缺点 给子过程传递参数有两种基本方式 通过寄存器传递 执行效率高 代码可能显得混乱 寄存器数量有限 通过堆栈传递 方式灵活通用 效率偏低 通过寄存器传递参数的例子 ;… Mov esi , off

文档评论(0)

1亿VIP精品文档

相关文档