8.1 内存和寄存器的分配_第1页
8.1 内存和寄存器的分配_第2页
8.1 内存和寄存器的分配_第3页
8.1 内存和寄存器的分配_第4页
8.1 内存和寄存器的分配_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内存和寄存器的分配函数的底层实现在C语言中,子程序被称为函数C程序本质上是函数的集合把C程序翻译到RISC-V机器上,需要理解C函数的翻译过程ABI操作系统为运行在该系统下的应用程序提供了应用程序二进制接口(ApplicationBinaryInterface,ABI)ABI包含了应用程序在这个系统下运行时必须遵守的编程约定包括系统调用的规定,以及关于程序可以使用的内存和寄存器的规定LinuxABIC程序,编译到RISC-V计算机时,必须遵守操作系统ABI规定GNU为RISC-V计算机定义了Linux操作系统下的ABIRV32I内存分配内存分配代码区:程序,程序计数器PC为C的变量分配存储空间:静态数据区和运行时栈静态数据区:静态存储类变量,寄存器x3运行时栈:局部变量,x2指向栈顶堆:动态分配数据系统空间:操作系统,如自陷处理例程,自陷向量表,I/O设备寄存器的内存映射地址等。寄存器分配寄存器的访问比存储器快得多RISC-V算术/逻辑运算指令,对寄存器进行运算应尽量多的使用寄存器RV32I寄存器分配寄存器用途ABI助记符保存/恢复x00zero无x1返回地址ra(ReturnAddress)

x2栈指针sp(StackPointer)callee-savex3全局指针gp(GlobalPointer)无x4线程指针tp(ThreadPointer)无x5~x7临时值t0~t2(Temporary)

x8保存寄存器/帧指针s0/fp(FramePointer)callee-savex9保存寄存器s1(Saved)callee-savex10~x11参数/返回值a0~a1(Argument)

x12~x17参数a2~a7(Argument)

x18~x27保存寄存器s2~s11(Saved)callee-savex28~x31临时值t3~t6(Temporary)

保存寄存器x8~x9,x18~x27:需要保存的寄存器,例如局部变量,其中,x8也可用于帧指针这里的局部变量指的是基本数据类型的变量x5~x7和x28~x31:存储临时产生的值助记符ABI定义在RISC-V汇编指令中,可以使用助记符寄存器保存/恢复局部变量必须由被调用者保存/恢复,即采用callee-save策略被调用者知道使用了哪些寄存器存储局部变量栈指针如果被修改,采用callee-save策略保存/恢复x0,x3和x4中的值是不变的,不需要保存/恢复其他寄存器,视情况可采用caller-save策略保存/恢复为变量分配内存静态存储类变量,分配到内存中数组、结构体等类型的变量,分配到内存中当寄存器数量不足时例如,当局部变量(基本数据类型)个数多于12个,或者参数个数多于8个需要使用内存寄存器的保存/恢复,需要使用内存静态数据区静态存储类变量全局变量关键字static声明的静态变量静态数据区示例……inta;intb;intmain(){ ……}变量距离gp/x3的偏移量a:0b:1t0/x5

blw t0,4(gp)运行时栈局部变量/自动存储类变量(基本数据类型)数组、结构体等寄存器保存/恢复x2/sp,栈指针运行时栈示例……intmain(){intx[10];/*对数组x进行初始化*/……

/*输出累加和*/ printf("sum=%d\n",sum);}数组x是局部变量,被分配到栈中把变量x[9]加载到临时寄存器x5/t0中lw t0,36(sp)帧指针更方便的访问运行时栈中的变量帧指针作为基址x8/fpt0

x[9]假设x[9]距离fp的偏移量为-2,在fp和x[9]之间存储的都是整数类型的值 lw t0,-8(fp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论