risc-v与SBI与ABI

SBI

riscv 的 sbi 是个标准 , 且 SBI 是 riscv独有的东西,其他架构没有这个概念
	实现有很多种 // https://github.com/riscv-non-isa/riscv-sbi-doc
		opensbi 和 rustsbi
	这些实现都跑在M-mode
	这些实现都为运行在 S-mode 上的软件(例如linux) 提供 服务
		例如 
			架构不支持指令 翻译
			串口打印
			虚拟化
				原来 kvm 也是 sbi的一样,看来如果 linux中的kvm除了要支持虚拟化
				也要支持sbi中的所有规范了
				也就是说linux 内核及其app要占领 M-mode(KVM) S-mode(Linux) U-mode(APP)
			安全支持
	
SBI 的作用
sbi 在启动过程中的作用
sbi在运行时的作用
SBI 的实现有哪些

在这里插入图片描述

ABI

调用约定,类型表示和名称修饰这三者的统称,
即是总所周知的应用二进制接口(ABI)
调用约定
类型表示
名称修饰
我们在源程序中起的函数名经过编译后会被修改,这就是名称修饰。

在这里插入图片描述

riscv 的 sbi 也是个标准
	// ABI 不是 riscv独有的东西,每个架构都有这个概念
	// 但是每个架构的ABI具体定义都不相同,但是定义的范围都是差不多的
ABI 定义了
	1.函数调用中对寄存器的使用
	2.linux做系统调用时,调用号应该存在哪个寄存器中
	3.
计算机系统结构基础 胡伟武
	第4章 软硬件协同

SBI与ABI有什么不同

他们都是标准

---

他们定义的范围不同
SBI是个新名词,ABI是个老名词
SBI是riscv独有的,ABI是每个架构都有的
  • 为什么 riscv 有 abi ,其他架构没有sbi
是因为risv的开放性
arm 有 EL1 与 EL2 的交互, EL2 与 EL3 的交互,但是这些交互都没有 开放标准
	arm EL1 & EL2 的交互 可以 由 KVM 来实现
	arm EL2 & EL3 的交互 可以 由 ATF 来实现(arm私有的)

riscv有 s-mode 与 m-mode 的交互, 并且开放了标准 , 让更多的人可以参与实现这个标准

EL0 与 EL1 / s-mode 与 u-mode 交互没有标准 , linux 有一套标准(系统调用) , win有一套标准(系统调用)

但是再往上 有标准, 叫 posix  ,大家都基于posix干活
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值