RISC-V
文章平均质量分 93
田园诗人之园
我是一位平凡的诗人,也是一位平凡的工程师。
展开
-
RV64和ARM64栈结构差异
为什么要写这篇文章呢,主要是为了区分一下在RV64(RISC-V)和ARM64两种不同处理器在函数调用过程中栈的结构性差异,当出现异常情况时如何根据栈以及异常时寄存器的情况如何推导出调用栈。原创 2023-08-29 23:53:54 · 1359 阅读 · 66 评论 -
RV64函数调用流程分析
RV64 程序调用标准]原创 2023-08-27 14:55:55 · 1324 阅读 · 96 评论 -
RISCV 6 RISC-V加载存储指令
载入时,同样将较大内存字节地址的内容转入较小寄存器字节。在一个字节地址不变的系统中,存在以下特性:如果一个字节被存储到内存的某个字节地址上,那么在任何字节地址上从该地址进行字节大小的加载都会返回存储的值。加载指令时I类型的指令编码,其立即数是有符号的立即数,在处理时需要考虑其符号位,立即数的范围为[-2048 ~ 2047]存储指令时S类型的指令编码,其立即数是有符号的立即数,在处理时需要考虑其符号位,立即数的范围为[-2048 ~ 2047]RV64 的加载存储指令和RV32的加载存储指令时类似的。原创 2023-08-24 06:40:21 · 1670 阅读 · 49 评论 -
RISCV 5 RISC-V调用规则
总大小不超过 XLEN 位的聚合将在寄存器中传递,字段的布局如同在内存中传递一样。对齐方式为 2×XLEN 位、大小最多为 2×XLEN 位的可变参数,以对齐寄存器对的形式传递(即寄存器对中的第一个寄存器为偶数),如果没有寄存器对,则以值的形式传递到堆栈。包含一个浮点实数和一个整数(或位域)的结构(无论顺序如何)都会传递到浮点寄存器和整数寄存器中,而不将整数扩展为 XLEN 位,前提是浮点实数不超过 FLEN位宽且整数不超过 XLEN 位宽,并且至少 1 个浮点参数寄存器和至少 1 个整数参数寄存器可用。原创 2023-08-02 23:38:06 · 1731 阅读 · 89 评论 -
RISCV - 4 ISA 扩展名命名约定
该文源于RISCV的《本章介绍 RISC-V ISA 扩展命名方案,该方案用于简明地描述硬件实现中存在的指令集或应用程序二进制接口 (ABI) 使用的指令集。RISC-V ISA 旨在支持具有各种实验性指令集扩展的各种实现。我们发现有组织的命名方案可以简化软件工具和文档。原创 2023-07-30 23:03:18 · 925 阅读 · 106 评论 -
RISCV -3 RV32I/RV64I基本整型指令集
LW 指令从内存中加载一个 32 位值,并将其符号扩展到 64 位,然后将其存储到 RV64I 的寄存器 rd 中。所有指令的长度都是固定的 32 位,并且必须在内存的四字节边界上对齐。因此,与 NOP 指令一样,除了推进 pc 和任何适用的性能计数器外,HINT 不会改变任何架构上可见的状态。每个立即数子字段都标有正在产生的立即数的位位置(imm[x ]),而不是通常指令立即字段中的位位置。可选的压缩 16 位指令格式是根据 x1 是返回地址寄存器、x2 是堆栈指针的假设设计的。原创 2023-07-25 22:54:57 · 2084 阅读 · 89 评论 -
RISCV - 2 “Zicsr“, CSR Instructions
RISC-V 定义了由 4096 个控制和状态寄存器组成的独立地址空间,这些寄存器与每个 Hart 相关联。本章定义了在这些 CSR 上运行的全套 CSR 指令。虽然 CSR 主要由特权架构使用,但在非特权代码中也有一些用途,包括计数器和定时器以及浮点状态。计数器和定时器不再被视为标准基本 ISA 的必备部分。原创 2023-07-23 22:54:01 · 1378 阅读 · 83 评论 -
RISCV - 1 RV32/64G指令集清单
该文源于RISCV的《[The RISC-V Instruction SetManual: Volume I](https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-1239329-2023-05-23)》,文档的链接为:[https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-1239329-2023-05-23]原创 2023-07-19 00:11:19 · 1550 阅读 · 70 评论 -
RV32I 六种指令格式
RV32I 有六种基本指令格式,分别是:用于寄存器-寄存器操作的R 类型指令,用于短立即数和访存load 操作的I 型指令,用于访存store 操作的S 型指令,用于条件跳转操作的B 类型指令,用于长立即数的U 型指令和用于无条件跳转的J 型指令。指令参考卡:...原创 2020-06-18 17:09:17 · 3368 阅读 · 4 评论 -
nuttx enter_critical_section
When we call a function like nxsig_timeout, it will first call the funtion enter_critical_section, then callup_unblock_task, but up_unblock_task will triger a ecall irq, After finish it’s handlation, will callleave_critical_section leave the function nxs原创 2020-06-09 20:21:15 · 420 阅读 · 0 评论 -
nuttx context switc(RISC-V)
nuttx的context switch可以从sleep开始看起,110 unsigned int sleep(unsigned int seconds)111 {112 struct timespec rqtp;113 struct timespec rmtp;114 unsigned int remaining = 0;115 int ret;116117 /* Don't sleep if seconds == 0 */118119 if (seconds原创 2020-06-08 20:24:25 · 985 阅读 · 0 评论 -
RISC-V Assembly Programmer's Manual
The source of this file is :https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.mdCopyright and License InformationThe RISC-V Assembly Programmer’s Manual is© 2017 Palmer Dabbelt palme...转载 2020-01-09 21:11:34 · 1473 阅读 · 0 评论