喜欢0次
Risc-V规定,如果支持单精度浮点指令或者双精度浮点指令,四精度浮点指令,则需要增加一组独立的通用浮点寄存器组,包括32个通用浮点寄存器,标号位f0到f31。如果仅支持F扩展指令子集,则每个通用寄存器是32位的,如果支持D扩展指令子集,则每个通用寄存器是64位的,如果支持Q扩展指令集,则每个浮点通用寄存器是128位的。
如果处理器同时支持 RV32F 和 RV32D 扩展,则单精度数据仅使用 f 寄存器中的低 32位。与 RV32I 中的 x0 不同,寄存器 f0 不是硬连线到常量 0, 而是和所有其他 31 个 f 寄存器一样,是一个可变寄存器。下面是32位和64位浮点寄存器的名字,别名和注释。
63-32 | 31-0(名字和别名) | 注释 |
---|---|---|
f0/ft0 | FP Temporary | |
f1/ft1 | FP Temporary | |
f2/ft2 | FP Temporary | |
f3/ft3 | FP Temporary | |
f4/ft4 | FP Temporary | |
f5/ft5 | FP Temporary | |
f6/ft6 | FP Temporary | |
f7/ft7 | FP Temporary | |
f8 / fs0 | FP Saved register | |
f9 / fs1 | FP Saved register | |
f10 / fa0 | FP Function argument, return value | |
f11 / fa1 | FP Function argument, return value | |
f12 / fa2 | FP Function argument | |
f13 / fa3 | FP Function argument | |
f14 / fa4 | FP Function argument | |
f15 / fa5 | FP Function argument | |
f16 / fa6 | FP Function argument | |
f17 / fa7 | FP Function argument | |
f18 / fs2 | FP Saved register | |
f19 / fs3 | FP Saved register | |
f20 / fs4 | FP Saved register | |
f21 / fs5 | FP Saved register | |
f22 / fs6 | FP Saved register | |
f23 / fs7 | FP Saved register | |
f24 / fs8 | FP Saved register | |
f25 / fs9 | FP Saved register | |
f26 / fs10 | FP Saved register | |
f27 / fs11 | FP Saved register | |
f28 / ft8 | FP Temporary | |
f29 / ft9 | FP Temporary | |
f30 / ft10 | FP Temporary | |
f31 / ft11 | FP Temporary |
Risc-V架构规定,如果支持浮点指令,需要增加一个浮点控制状态寄存器fcsr,该寄存器是一个可读可写的csr寄存器。