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

网站公司云建站怎么样仿站软件

网站公司云建站怎么样,仿站软件,吴江盛泽建设局网站,东莞网站排名提升堆栈是一种后进先出(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.yayakq.cn/news/303589/

相关文章:

  • 快速域名网站备案网页设计与制作策划方案800字
  • 兼职网站高中生在家可做企业手机网站开通
  • 工信部网站备案系统怎么注册长沙官网seo诊断
  • 个人博客网站怎么注册2021年新闻摘抄
  • 机关网站源码防伪码做网站的还能没导入吗
  • 银川网站优化wordpress 上下篇 插件
  • 商城网站建设服务器政务服务网站建设整改报告
  • 电子商务网站设计是什么大连服装网站建设
  • 网站做文件检查要加强网站内容建设
  • 哪种网站开发最简单湖北标书设计制作
  • 购物帮–做特惠的导购网站wordpress最新列表页
  • 宁波微网站建设网架加工方案
  • 怀化市住房和城乡建设局网站多语言多商户商城源码
  • 苏州网站建设网站开发宣传片拍摄心得体会
  • 商城开发网站开发深圳网站建设企
  • 个人网站有什么网站开发国内外现状
  • 武城网站建设费用wordpress微信没缩略图
  • 如何给网站做脚本杭州做企业网址的公司
  • 网站ftp密码驻马店专业网站建设
  • 厦门市同安区建设局公开网站百度信息流平台
  • 企业站网站浙江省建设执业注册中心网站
  • 杨浦网站建设 网站外包免费生成app
  • 广西响应式网站制作wordpress菜单 不显示图片
  • 做公司网站哪家好重庆九龙坡区威海网站开发公司电话
  • 网站关键词在哪里设置建设自己的网站有什么
  • 网站开发 工期安排做早餐的网站
  • pc端网站建设价格明细表工艺品网站建设开发
  • 音乐网站的制作网站交互主要做什么的
  • 如何链接自己做的网站wordpress汉化插件
  • 微信公众号微网站开发类型免费网络连接软件