Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
RISC-V 规范引用了“hart”一词 - “hart”是什么意思?
我找到了参考文献hart在第 35 页RISC V 2 1 规范 https content riscv org wp content uploads 2016 06 riscv spec v2 1 pdf 但是 我找不到它的定义hart在
cpuarchitecture
RISCV
hyperthreading
cpucores
RISC-V 调用约定的 ABI 寄存器名称
我对 RISC V ABI 寄存器名称感到困惑 例如 第 85 页的 RISC V 指令集手册 第一卷 用户级 ISA 版本 2 0 中的表 18 2 指定堆栈指针sp正在注册x14 然而 指令 addi sp zero 0 由 riscv
cpuregisters
callingconvention
ABI
RISCV
数组和结构体可以以不同的方式初始化吗?
我的问题可能看起来很奇怪 事实上 这是上下文 我目前在切换时遇到一个奇怪的问题 关于我正在从事的项目 核心从pullinino到CV32 也发生了一些其他变化 例如关于crt0 如一些数据内存重置 这是一个 真实的 例子 说明了一个非常简单
c
Embedded
Storage
RISCV
linkerscripts
零/符号扩展是无操作的,为什么要为每种大小类型提供指令呢?
对于 x86 和 x64 编译器生成类似的零 符号扩展 MOVSX 和 MOVZX 扩展本身并不是免费的 但允许处理器执行无序魔法加速 但在 RISC V 上 因此 无符号和有符号 32 位整数之间的转换是无操作 从有符号 32 位整数到有
Assembly
RISCV
signextension
zeroextension
为定制 RISC-V imafd SOC 移植 Linux
我正在尝试构建一个 yocto演示 coreip cli我的自定义 risc v SOC 的图像仅支持imafd指示 对于 Bitbake 使用的交叉工具链的编译 我尝试更改 openembedded core 层中的 cross binu
gcc
crosscompiling
yocto
RISCV
Openembedded
机器模式下mret和ret指令有什么区别?
当RISC V核心工作在机器模式时 mret和ret指令有什么区别吗 ret is a pseudoinstruction which actually is a jalr instruction while mret is a real
RISCV
GDB 中断命令不会在命令文件中执行
我有一个调试脚本 它执行以下操作 设置两个断点 让我们称呼他们吧start and end断点 启动后 脚本将继续执行 直到start命中断点 once start命中断点 我执行单步执行 直到end命中断点 这是我的命令文件 end br
debugging
GDB
RISCV
openocd
seggerjlink
RISC-V指令集中的FENCE指令是什么意思?
在浏览 RISC V ISA 时 我在内存模型部分看到了一条指令 FENCE 指令 它到底是什么意思 RISC V ISA 使用宽松的内存模型 其中一个线程执行的加载和存储的顺序在另一个线程看到时可能不同 这样做是为了启用提高内存系统性能的
compilerconstruction
processor
microprocessors
RISCV
RISC V手册混淆:指令格式VS立即数格式
我有一些与 RISC V 手册相关的问题 它有不同类型的指令编码 如R型 I型 就像MIPS编码一样 R type 31 25 24 20 19 15 14 12 11 7 6 0 funct7 rs2 rs1 funct3 rd opco
cpuarchitecture
RISCV
RISC-V 中的旋转位
嘿 我对 RISC V 还算陌生 我的练习题之一是 将 0x0000000000000123 的值右移 4 位 预期结果为 0x3000000000000012 即所有十六进制数字向右移动一位 而最右边的一位移动到前面 到目前为止 我了解了
BitManipulation
RISCV
裸机 RISC-V CPU - 处理器如何知道从哪个地址开始获取指令?
我正在设计自己的 RISC V CPU 并且已经能够实现一些指令代码 我已经安装了 RV32I 版本的 GCC 编译器 所以我现在有了汇编器riscv32 unknown elf as可用的 我正在尝试仅用一条指令来汇编一个程序 simpl
Assembly
cpuarchitecture
ELF
RISCV
riscv32
为什么 RV64 为 32 位操作而不是 64 位操作引入新的操作码
在浏览 RISC V 规范时 我注意到 64 位版本与 32 位版本的不同之处在于 它 将寄存器扩展至 64 位 更改了指令以作用于整个 64 位范围 添加了执行 32 位操作的新指令 这使得 RV32 代码与 RV64 不兼容 但是 如果
Assembly
32bit64bit
RISCV
opcode
instructionset
在 C 中实现 SB 型 riscv 指令
我遇到了一些问题 我尝试将 32 位二进制解码为 RISCV 架构集中的 SB 类型指令 我已经移动了操作码 imm rs1 rs2 和 rd 值 但未能获得正确的 IMM 值 例如对于以下 32 位二进制 1111111000000111
c
BitManipulation
RISCV
bitset
RISC-V 使用 LUI 和 ADDI 构建 32 位常量
LUI 加载立即数 用于构建32位常量并使用U型格式 LUI 将 U 立即数放入目标寄存器 rd 的高 20 位 并用零填充最低 12 位 我在手册中找到了这个 但是如果我想将 0xffffffff 移动到寄存器 我需要的所有代码是 LUI
Assembly
constants
RISCV
immediateoperand
使用 Clang 为 RISC-V 进行编译
我正在尝试使用构建一个 hello world 程序Clang 版本 12 0 1 适用于 RISC V 架构 我已经安装了它LLVM 版本 12 0 1 具有以下设置 cmake G Unix Makefiles DLLVM ENABLE
Compilation
Clang
LLVM
RISCV
RISC-V 中 JAL 和 JALR 指令的偏移地址
在 RISC V 规范中 JAL 和 JALR 指令中的立即数被转换为跳转偏移量 如下所示 将给定立即数符号扩展为 XLEN 位 将 LSB 设置为零 我对此有几个问题 问题1 对于 JAL 这给出了一个范围 000000000000 to
Assembly
RISCV
如何为 Risc-V(汇编语言)编写旋转操作 我们有像 8086 中那样的命令吗?
我以前使用过8086的汇编语言 8086中的旋转操作只是一个命令 但我在 Risc V 汇编语言中找不到旋转操作的特定关键字 看起来扩展 B 最终应该定义这样的指令 在那之前你必须使用左移和右移来组合它 这是 MIPS32R2 rotrv
Assembly
RISCV
凿子3.功能模块Mux4
我正在按照文档学习 Chisel在 Github 上 https github com ucb bar chisel3 wiki Short 20Users 20Guide 20to 20Chisel 到目前为止 一切都完美无缺 但我还是卡
scala
module
RISCV
mux
Chisel
为什么 $ra 被调用者保存在 RISC-V 中
我发现在 RISC V 中 ra调用者是否已保存 以 MIPS 为单位 ra是被调用者 这意味着在 RISC V 中被调用者可以直接更改ra没有保存 但自从ra已经改变了 被调用者如何返回调用者 无论名称如何 RISC V ra 和 MIP
Assembly
RISCV
Risc-V:能够利用 GCC 的简单 RV32I 实现的最低 CSR 要求
对于能够运行 GCC 生成的机器代码的 RV32I 最低的 CSR 要求是什么 我正在考虑一个简单的基于 fpga 嵌入式 的实现 不需要虚拟内存或 Linux 支持 另外 我应该使用什么 GCC 标志来防止它使用未实现的 CSR 相关指令
gcc
RISCV
1
2
3
4
5
»