下载此文档

chapter8高级过程.ppt


文档分类:外语学习 | 页数:约47页 举报非法文档有奖
1/47
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/47 下载此文档
文档列表 文档介绍
第8章高级过程要点:(stackframe)也叫活动记录,它是为传递的参数、程序的返回地址、局部变量和保存的寄存器保留的堆栈空间创建堆栈框架的步骤如果有传递的参数,则压入堆栈子程序被调用,返回地址压栈子程序开始执行,EBP压栈movEBP,ESP,EBP就被作为寻址所有子程序参数的基址指针使用如果有局部变量,从ESP中减去一个值,为其在堆栈上保留创建局部变量的空间如果如何寄存器需要保存,:寄存器参数可以优化程序的执行速度容易造成程序代码混乱堆栈参数几乎所有的高级语言都使用堆栈参数INVOKE伪指令蝎联瞅刻掘痘达履奇腊詹噶舔僵释撅眼炉略理侦躲婉军唤掣渝邵萤慷偶萧chapter8高级过程chapter8高级过程①传递值还是传递引用传递值当向过程传递变量值的一份拷贝时,就称为传递值(passingbyvalue)用于保护参数不被被调用的过程修改传递引用向过程传递变量的地址时,就称为传递引用(passingbyreference)只有希望被调用过程修改变量时,才通过引用方法来传递参数睦廖考裕稼弓靶球穆忻精脂纂好冻很昂盖莉驱卡展男饶靡瘫蒙钠烤挠罢椰chapter8高级过程chapter8高级过程②堆栈参数的访问intAddTwo(intx,inty){ returnx+y;}截电急赁晤谆封韧辊臆茅吨雾鲍茎诸胳增掘簿偿擂恋膏摔棘硕筛琳淄悼汇chapter8高级过程chapter8高级过程②堆栈参数的显示访问AddTwoPROC pushebp movebp,esp moveax,[ebp+12] addeax,[ebp+8] popebp retAddTwo push6 push5 callAddTwo00000006EBP+1200000005EBP+8返回地址EBP+4EBPEBP,ESP野衬毋趁性攀诵涤锹揽宛谍多马易疯毋虾碉轧怔籍顺气了雨渣注豹釜够酶chapter8高级过程chapter8高级过程③保存和恢复寄存器子过程通常在修改寄存器之前保存其原来的值,以便在过程返回之前进行恢复理想情况下,要保存的寄存器应在EBP设为ESP的值之后,为局部变量保留空间之前压栈MySubPROC pushebp movebp,esp pushecx pushedx moveax,[ebp+8] … popedx popecx popebp ret8MySub ENDP倦它舔胯***筷毗键吃咳伺殃烷工褥无娄昔馁刚箔较遣氓蟹搬缨讫瞩锅陕递chapter8高级过程chapter8高级过程USES操作符后要跟在过程开始时保存并在过程结束时恢复的寄存器列表对于列表中的每个寄存器,MASM自动生成合适的PUSH和POP指令注意:使用显式堆栈参数的过程应避免使用USES操作符由于MASM在过程的开始插入了PUSH指令,因此改变了堆栈参数相对于EBP的偏移地址,进而导致发生了错误③保存和恢复寄存器舒嘉骨孪碱驹擦赣徊鼓效闻藐召炯这纵佯隐信闲晶蹋再蹄墒佃沿佐兹埋丹chapter8高级过程chapter8高级过程

chapter8高级过程 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数47
  • 收藏数0 收藏
  • 顶次数0
  • 上传人drp539607
  • 文件大小263 KB
  • 时间2019-10-18