当前位置: 首页 > wzjs >正文

低价网站建设教程企业网络营销青岛

低价网站建设教程,企业网络营销青岛,武汉网站成功案例,网站建设怎么解析域名函数执行中的栈和寄存器调用 函数执行过程中主要用到的寄存器有程序计数器和栈指针。 程序计数器(IP):指向下一条执行指令的地址,其值用%rip来表示 栈指针:指向栈顶地址,其值用%rsp来表示 当过程P调用过…

函数执行中的栈和寄存器调用

函数执行过程中主要用到的寄存器有程序计数器和栈指针。

程序计数器(IP):指向下一条执行指令的地址,其值用%rip来表示

栈指针:指向栈顶地址,其值用%rsp来表示

当过程P调用过程Q时,其栈帧结构可能如下图所示:

在这里插入图片描述

地址转移

注意:当过程P调用过程Q时,会将返回地址压入栈中,从而确定当执行完Q后在哪个地址继续运行,而这个返回地址是P的栈帧的一部分。在x86-64中,用指令call Q来记录。这个指令会把返回地址压入栈中,并将程序计数器设为过程Q的起始地址。而在x86-64中,指令ret会从栈中弹出返回地址,并把程序计数器的值设为该返回地址。

在这里插入图片描述

数据传输

过程P最多可以通过寄存器向Q传递6个整数值,如果过程的参数小于等于6个,那么所有参数都可以通过寄存器来传递,而如果大于6个则需要额外分配栈帧来保存参数。如上图,参数数量n>6,则P分配的栈帧需要容纳7到n号参数,即为P的参数构造区。对于函数:

在这里插入图片描述

其栈帧结构为:

在这里插入图片描述

对于过程P,其对多个参数过程Q的栈帧调用过程可以总结为:

  1. 移动栈顶指针,为变量分配内存(遵循内存对齐原则)
  2. 对于前六个参数,设置其对应寄存器的值
  3. 对于其他参数,将其表示为栈顶指针+偏移量

对于不同位置和大小的参数,其和寄存器的对应关系为:

在这里插入图片描述

寄存器的局部存储空间

由于寄存器组是唯一被所有过程共享的资源,因此需要确保在过程之间进行调用时不会出现寄存器覆盖情况。为此x86-64采用了一组同一的寄存器使用惯例。

被调用者保存寄存器:过程P调用过程Q时,Q必须保存这些寄存器的值,保证它们的值在Q返回到P时与Q被调用时是一样的。(将其保存到Q的栈帧上)

调用者保存寄存器:除了被调用者保存寄存器和栈指针以外所有其他的寄存器,这意味着任何函数都能修改它们。

参考文献

《深入理解计算机系统(第三版)》

http://www.dtcms.com/wzjs/166129.html

相关文章:

  • 建设项目公示网站项目营销推广方案
  • 网站预算新网站排名优化怎么做
  • 天津网站建设 泰姆仕高端定制网站建设
  • sourceforge wordpress成都纯手工seo
  • javaweb网上购物系统十大seo公司
  • 平台网站建设推荐搜索竞价排名
  • wordpress中文免费模板seo实战培训费用
  • 单县城乡住房建设局网站店铺推广引流的方法
  • 建一个网站带管理需要多少钱一年百度下载正版
  • 静态网站模板中英文方象科技专注于什么领域
  • 如何做公司的网站建设网络营销企业有哪些公司
  • 电子商务软件网站建设的核心百度网盘客服在线咨询
  • wordpress提醒用法比优化更好的词是
  • 微信内部劵网站怎么做怎样交换友情链接
  • 怎么自己做直播网站网络营销的营销方式
  • 旅行社网站制作网络销售平台
  • asp网站开发 基础新站优化案例
  • 家居设计上海牛巨微seo
  • 莱芜金点子广告最新招聘信息萧山区seo关键词排名
  • 宝安附近做网站公司长沙关键词优化首选
  • 兰溪市建设局官方网站域名购买平台
  • 自己做网站步骤免费域名解析
  • 做本地网站怎么挣钱网络营销师报名官网
  • 怎么做网站icp备案百度网址大全官网旧版
  • 南昌做房地产用哪个网站高级搜索指令
  • 像天猫网站怎么做太原seo关键词排名
  • 华硕路由器做网站怎样宣传网站
  • 北京网站开发服务谷歌优化排名哪家强
  • 嘉鱼网站建设公司南通seo网站优化软件
  • 南阳网站建设的公司用手机制作自己的网站