首页 > 编程语言 >一起学RISC-V汇编第2讲RISC-V之march与mabi

一起学RISC-V汇编第2讲RISC-V之march与mabi

时间:2024-07-16 23:53:11浏览次数:16  
标签:march ABI 扩展 RISC Ratified Draft 指令集 mabi

这一章讲一些RISC-V的一些零碎知识点,后面章节可能要用到这些概念。

1 RISC-V的各种扩展march

x86 与 arm 是增量型ISA,意味着新处理器需要兼容过去所有的指令,这样会导致ISA指令随时间流逝而大幅增长。

RISC-V被设计为模块化的,这与过去几乎所有的ISA都不同,其核心是RV32I的基础ISA,可运行完整的软件栈。其它扩展都是可选的,这样RISC-V国际基金会将以可选扩展方式缓慢演进指令集,以规避过去增量型ISA带来野蛮生长的现象。

riscv的扩展如下,下表基于《riscv-spec-20191213.pdf》,有些扩展状态没有标出,最新的指令扩展又发生了变化,比如:一些扩展已经定稿了,一些扩展拆开成了几个子扩展,变得更加复杂了,详细信息可参阅最新的riscv-isa-manual

有如下几种状态:

Ratified:表示已经定稿,除非有严重bug,一般不会改

Frozen:冻结状态出现在定稿前,模块预计不会发生重大变化

Draft:表示草稿阶段,可能有较大修改

指令集模块名 说明 版本 状态
I 基本整数指令集,这是RV的基本指令集,是必选的,其它都是可选的。(Integer),
RV32I与RV64I 已Ratified
2.1 Ratified
F 单精度浮点数扩展指令集(Float) 2.2 Ratified
D 双精度浮点数扩展指令集(Double) 2.2 Ratified
Q 四倍精度浮点数扩展指令集(Qual) 2.2 Ratified
M 整型乘除法扩展指令集(Multiple) 2.0 Ratified
C 压缩指令集(Compress) 2.0 Ratified
A 原子操作指令集(Atomic) 2.1 Ratified
B 位操作指令集(Bit) 0.0 Draft
E 为嵌入式设计的整型指令集(Embedded), RV32E为draft状态 1.9 Draft
H 虚拟化扩展指令集(Hyper)
K 密码运算扩展指令集(Key)
V 可伸缩矢量扩展指令集(Vector) 0.7 Draft
P 打包SIMD扩展指令集(packed) 0.2 Draft
J 动态翻译语言(JIT)扩展指令集 0.0 Draft
T 事务内存指令集(Transactional Memory)
N 用户态中断指令集(User-Level Non-maskable Interrupts)

2 RISC-V的ABI

ABI(Application Binary Interface)为应用程序二进制接口,RISC-V目前定义了如下几种ABI规范:

详细的ABI规范可见后续函数调用章节。

ABI 说明 状态
ilp32 表示整数(I)类型、长(L)类型和指针(P)类型都占用32位。
即ILP32中整数、长整数和指针都使用32位表示
Ratified
ilp32f 在ilp32的基础上加上单精度浮点F Ratified
ilp32d 在ilp32的基础上加上双精度浮点D Ratified
ilp32e 在ilp32的基础上加上E扩展(嵌入式整数扩展) Draft
lp64 整数为32位,长(L)类型和指针(P)类型都占用64位 Ratified
lp64f 在lp64基础上加上单精度浮点F Ratified
lp64d 在lp64基础上加上双精度浮点D Ratified
lp64q 在lp64基础上加上四倍精度浮点数扩展指令集 Ratified

参考:

  1. 《riscv-spec-20191213.pdf》

  2. 【跟我学RISC-V】(一)认识RISC-V指令集并搭建实验环境

标签:march,ABI,扩展,RISC,Ratified,Draft,指令集,mabi
From: https://www.cnblogs.com/sureZ-learning/p/18306359

相关文章

  • 一起学RISC-V汇编第3讲之寄存器
    寄存器是处理器中最常用的处理单元,RISC-V指令的操作数除了立即数就是寄存器。RISC-V指令集包含了多种不同类型的寄存器,用于不同目的和功能:对于rv32imafd架构而言,包含如下寄存器:通用寄存器:32个通用整数寄存器,分别标记为x0-x31,如果是fd扩展,还有32个独立的浮点寄存器,分别标记为f......
  • RISCV AIA (五) APLIC
     APLIC在RISC-V系统中,PLIC处理外部中断是通过线中断而非MSI(messagesignalinterrupt)的方式,当系统的hart不具有IMSIC时,hart本身不支持MSI,因此所有的外部中断必须通过PLIC。即使hart具有IMSIC,且大多数的中断使用MSI的方式,但有些设备还是以线中断的方式发出。特别是对于......
  • SI24R03国产RISC-V内核2.4G无线收发SoC芯片
    RISC-V架构的优势相对于目前主流的英特尔X86架构及ARM等架构来说,RISC-V架构具有指令精简、模块化、可扩展、开源、免费等优点。RISC-V的基础指令集只有40多条,加上其他基本的模块化扩展指令总共几十条指令,非常简单,而且任何企业、开发者都可以免费、自由且不受限制地使用RISC-V指......
  • risc-v中的函数调用
    先来看一个普通main函数的完整执行过程(以a=bproblem为例)intmain(){inta=2;intb=3;intc=a+b;}其risc-v(rv32)的汇编如下main:addisp,sp,-32#将栈指针sp向下移动32个字节,预留栈空间swra,28(sp)#将返回地址ra存......
  • RISC-V 汇编语言--bbci 指令
    bbci 指令是RISC-V汇编语言中的一个条件分支指令,全称为"BranchifBitisClearandIncrement"。该指令会检查指定寄存器中的某一位是否被清除(即为0),如果是,则跳转到指定的标签或地址执行代码。在执行跳转之前,它还会将该位设置为1(即对该位进行“置位”操作)。具体来说,bbci ......
  • RISC-V精简指令集(RISC)介绍
    目录一 RISC-V的常用指令:二 RISC-V指令集实例:1. 基础算术和逻辑操作2. 加载和存储操作3. 控制流指令4. 其他指令一 RISC-V的常用指令:RISC-V是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),其指令集设计简洁、高效,并且具有可扩展性。以下是一些RISC-V的常用......
  • Risc-V 移植 ssh 与 sftp 记录
    Risc-V移植ssh与sftp记录关于Risc-V  天下苦intel久矣,而ARM的授权费也不低,导致市面上的SOC要么都很贵,要么厂家和品类没那么丰富,全志、ST、TI、RK、晶晨、海思、高通、联发科。。。都是中大规模的公司,小厂做不了,感觉限制了它的发展。  后来出了个Risc-V指令......
  • 使用qemu运行risc-v ubuntu
    参考UbuntuinstallationonaRISC-VvirtualmachineusingaserverinstallimageandQEMU用到的文件fw_jump.binu-boot.binubuntu-22.04.3-preinstalled-server-riscv64+unmatched.img1镜像准备ubuntu.com1.1镜像选择如上在下载UbuntuServer时,可能会遇到以......
  • RISC-V SoC研发flow的总结
    RISC-VSoC研发flow的总结今年的流片接近尾声了,我个人的评价是相比去年,在进度管理和流程管理上做的更好了一些。对比今年一月份开会时开会的PPT,基本上当时的规划和目标基本上都达成了。这次聊聊整个研发过程中的一些感悟。首先是对于整个团队的研发方向做了一个比较大的修正,大概......
  • Buildroot+RISC-V+QEMU(@Ubuntu)运行
    1RISC-V相关Buildroot代码下载和编译下载Buildroot代码并切换特定分支:gitclonehttps://github.com/buildroot/buildroot.gitgitcheckout2024.02.1编译RISC-V的Buildroot:makeqemu_riscv64_virt_defconfigmake-j322在QEMU上运行RISC-V镜像进入output/images目录......