RISC_V(1) ISA 概述

一、RISC_V指令集简介

          这里主要讨论RV32I,也就是32位整数指令集;与RV32E得我区别是,RV32I拥有32个32bit的通用寄存器。而RV32E只有16个32bit通用寄存器,且只支持M,A,C三种指令拓展。这是由于嵌入式资源稀缺。对于ASIC移除这16个寄存器可以节约大概25%的面积。

二、RISC_V地址空间

1.、内存地址空间在物理实现上可以采用冯诺依曼或者哈佛。寄存器映射部分,大部分外围的寄存器都会被映射到这个空间。

2.通用寄存器

        32个寄存器分别被标记为x0~x31 ,其中零号寄存器是制度寄存器。其值一直为0;RISC_V设计目标之一就是对C/C艹等高级语言提供硬件支持,并保持不同处理器之间在ABI层面的相互兼容。关于应用程序二进制接口ABI的介绍可以参考:什么是应用程序二进制接口ABI - 知乎。写得挺好。这里做一下简单总结:

  • 定义了系统基本数据类型的数据宽度   

        ABI 是编译器和链接器遵守的一组规则,以让编译后的程序可以正常工作。不同的操作系统定义了自己的ABI,举个例子,long long型的变量在64位的window和linux下的位宽不同。

  • 函数调用约定

        函数调用约定里涉及到寄存器怎么使用,参数如何传递(通过堆栈还是用寄存器),谁负责清理堆栈(是调用者清理还是被调用者清理),参数入栈的顺序(从右向左还是其它),栈帧的布局等。调用约定主要是由编译器负责实现的。以下就是RISC_V的通用寄存器功能说明,对函数调用约定做得标准化。ABI文章末尾有讲到帧栈的概念,说明了函数是如何跳转的以及保存的。

3.控制与状态寄存器

特权架构部分对为CSR单独分配了12位的地址空间,在用户指令集中,定义了Zicsr指令集拓展来对CSR进行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值