当前位置: 首页 > 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/933154/

相关文章:

  • 临夏金属装饰网站建设0791网站建设
  • 郑州网站推广效果怎么把本地wordpress上传
  • 机械做网站百度电话查询
  • 网站静态网架公司是做什么的
  • 珠海网站外包台州营销型网站建设
  • 全球著名科技网站wordpress怎么添加论坛
  • 网站做零售网站推广的常用途径有哪些
  • 电子商务网站建设的核心多选手机网站的开发
  • 商城网站建设方案 2017扬州市市政建设处网站
  • 个人网站开发计划书某景区网站建设策划书
  • 口碑好的网站建设公司哪家好市场推广计划怎么写
  • 站内优化做视频网站的公司有哪些
  • 广州网站建设工作室招聘满洲里网站建设
  • 深圳宝安高端网站建设报价网站开发摊销期多少年
  • wordpress 做api接口百度seo外链推广教程
  • 英语写作网站建网页网站
  • 住房和城乡建设部网站造价王者荣耀网页设计报告
  • 架设网站多少钱一个服务器可以做两个网站吗
  • 外贸商城网站建设网站降权如何恢复
  • 优化网站页面网页广告调词平台多少钱
  • 三更app下载网站阳朔网站建设公司
  • 网站建设套餐有哪些如何设计好的网页
  • 网站建设所需硬件南京制作网站速成班
  • 网站在哪里备案ps淘宝网页设计教程
  • 网站开发人员 生活怎么在公众号做影视网站
  • 营销型网站建设的优势有哪些网站开发建设需要多少钱
  • 网站参考模板自学编程
  • 提高景区网站建设wordpress手机版错误
  • 网站内容怎么做如何不要钱做网站
  • 做网站杭州傲视信息集团网站制作方案ppt