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

成都专业网站搭建公司baidu com百度一下

成都专业网站搭建公司,baidu com百度一下,北京公司请做网站工资,.me做社区网站堆栈是一种后进先出(LIFO)的队列,用于存储函数调用时的临时数据和现场数据。堆栈指针sp(寄存器2)是一个普通的RISC-V寄存器,按照惯例,指向堆栈的顶部。堆栈从高地址向低地址增长,即当…

堆栈是一种后进先出(LIFO)的队列,用于存储函数调用时的临时数据和现场数据。堆栈指针sp(寄存器2)是一个普通的RISC-V寄存器,按照惯例,指向堆栈的顶部。堆栈从高地址向低地址增长,即当需要更多的临时空间时,堆栈指针sp减小。

函数调用时,如果函数参数和局部变量很多,寄存器放不下,需要开辟堆栈空间存储。中断发生时,堆栈空间用于存放当前执行程序的现场数据(下一条指令地址、各种缓存数据),以便中断结束后恢复现场。开辟和释放堆栈空间的方法是调整堆栈指针sp的值。

函数调用时,为了避免函数修改除了a0之外的其他寄存器的值,造成主程序的寄存器内容被破坏,需要在函数执行前将需要修改的寄存器的值保存到堆栈上,然后在函数返回前将它们从堆栈上恢复。具体的步骤是:

  • 在堆栈上分配空间来存储一个或多个寄存器的值
  • 将寄存器的值存储到堆栈上
  • 执行函数使用寄存器
  • 从堆栈上恢复寄存器的原始值
  • 释放堆栈空间

堆栈通常颠倒存储在存储器中,使得堆栈顶部实际上是最低地址,并且堆栈向下朝向较低存储器地址增长。 这称为降序堆栈。 一些架构还允许向上的堆栈向更高的内存地址增长。 堆栈指针(sp)通常指向堆栈上的最顶层元素; 这称为全栈。 某些体系结构(例如 ARM)还允许空堆栈,其中 sp 指向堆栈顶部之外的一个字。 RISC-V架构定义了函数传递变量和使用堆栈的标准方式,以便不同编译器开发的库可以互操作。 它指定了一个完整的降序堆栈。

 RISC-V指定的降序堆栈如下图所示: 

 

 

 

上图代码示例展示了一个改进的diffofsums函数,它在修改t0,t1和s3寄存器之前将它们保存到堆栈上,并在返回前将它们从堆栈上恢复。这样可以避免破坏调用者的寄存器内容。

下图展示了在调用代码示例中的diffofsums函数之前,期间和之后的堆栈情况。堆栈一开始在0xBEF0F0FC。diffofsums通过将堆栈指针sp减少12来为三个字分配堆栈空间。然后它将t0,t1和s3寄存器中的当前值存储在新分配的空间中。它执行函数的其余部分,改变这三个寄存器的值。在函数结束时,diffofsums从堆栈上恢复这些寄存器的值,释放它的堆栈空间,并返回。当函数返回时,a0保存了结果,但没有其他副作用:t0,t1,s3和sp与函数调用前具有相同的值。

 

一个函数为自己分配的堆栈空间称为它的堆栈帧(stack frame)。diffofsums的堆栈帧有三个字深。模块化原则告诉我们,每个函数只应访问自己的堆栈帧,而不是属于其他函数的帧。

http://www.yidumall.com/news/17745.html

相关文章:

  • 新开传奇发布网站百度一下电脑版首页
  • 网站开发设计文员百度关键词首页排名服务
  • 郑州高端网站建设优化的近义词
  • 公司网站ICP怎么备案呢aso排名服务公司
  • 网站建设和运维app推广平台排行榜
  • 政府网站建设 强化考评问责seo服务哪家好
  • 女性时尚资讯+淘宝客模式系列网站源码南京百度快速排名优化
  • 做网站分类链接西安百度推广运营公司
  • 妈妈网站源码广告营销推广方案
  • 做h5网站的公司广东vs北京首钢
  • 网站制作报价ihanshi百度站长工具查询
  • 中华人民共和国住房和城乡建设部官方网站平台推广是什么意思
  • 英语网站大全免费能去百度上班意味着什么
  • 视频网站建设服务360地图下载最新版
  • 网站设计方案书pptgoogle 浏览器
  • 在网站上做承诺关键词搜索神器
  • 智能手机网站模板微信seo
  • 深圳网站建设响应式手机百度下载安装
  • 丹东企业做网站uc搜索引擎入口
  • 免费永久个人网站注册南宁求介绍seo软件
  • 做搜狗pc网站优化首谷歌seo优化排名
  • 深圳工厂网站建设公司网站建设及网络推广
  • 潍坊那个公司做网站比较好现在如何进行网上推广
  • 网站建设全包广苏州seo关键词优化推广
  • led设计网站建设营销软文写作
  • 一个空间只能放一个网站吗seo服务套餐
  • 帮人做设计的网站互联网营销师培训费用是多少
  • 三明做网站公司搜索引擎优化人员优化
  • 福州网站建设索q479185700seo网站推广免费
  • 网站跳转如何做百度推广退款电话