riscv相关内容

如何使用LLVM/Clang to RISC-V目标进行编译?

我想编译一个简单的程序“int main(){返回0;}”到RISC-V处理器。 LLVM/Clang版本是9.0,我想用这样的RISC-V模拟器运行编译后的程序https://github.com/riscv/riscv-tools 我的问题是,我无法使用以下命令仅列出clang支持的目标LLC-s: llc --version llc -march=xxARCHTYPExx -ma ..
发布时间:2022-08-07 12:49:24 其他开发

如何禁止Riscv压缩编码?

当我使用riscv64-未知-精灵-GCC时,选项-march=rv64g和-march=rv64gc几乎没有区别。 -march=64g将尽可能在标准库函数中使用RVC代码,例如print,但不会在我自己的函数中使用。在-march=64gc时,请在两种类型的函数中使用RVC代码。 我不知道这是否为违约。但是,如果我想禁止RVC代码,以便即使在没有RVC代码的标准库函数中,我应该做什 ..
发布时间:2022-04-10 13:36:55 其他开发

使用 Clang 编译 RISC-V

我正在尝试使用 Clang(版本 12.0.1)为 RISC-V 架构构建一个 hello world 程序.我已经使用 LLVM(版本 12.0.1)安装了它,设置如下: cmake -G "Unix Makefiles";\-DLLVM_ENABLE_PROJECTS=“clang;clang-tools-extra;libcxx;libcxxabi;libunwind;lldb;compi ..
发布时间:2022-01-04 21:43:27 其他开发

为什么 RISC-V S-B 和 U-J 指令类型以这种方式编码?

我正在阅读一本书“计算机组织与设计 RISC-V 版",我遇到了 S-B 和 U-J 指令类型的编码. 我上面提到的那些类型有奇怪的编码立即字段. S-B 类型将立即数字段分成 2 部分.这是有道理的,因为所有指令编码都必须相似.但我不明白为什么下面的直接字段以这种方式编码. imm[12, 10:5], imm[4:1, 11] 代替 imm[11:5], imm[4:0] ..
发布时间:2021-12-27 15:44:47 其他开发

RISCV VERILOG HDL 代码

在 Xilinx ISE 上编译 RISCV VERILOG HDL 时出现以下错误: 它说模块 vscale_pipeline 中第 296 行的以下代码中的“不支持的系统函数调用" 295: ifndef 合成296:PC_WB 解决方案 一些综合工具定义了 SYNTHESIS 宏,以便使用 更容易在综合中跳过不可综合的代码 `ifdef 合成...`endif 块,就像在 ..
发布时间:2021-09-17 19:28:48 其他开发

当我给出一个特定的目标时,Clang 编译器找不到 C/C++ 标准库,尽管它在没有给出目标的情况下也能工作

我目前在 ubuntu 上使用 clang11 来编译任何 c/c++ 代码并且它工作正常但是当我尝试编译任何代码时(包括 任何标准库)到任何特定目标的汇编代码,例如 x86_64(即使我有 x86_64)riscv 并给出一个标记 --target=x86_64 或 --target=riscv32 我在代码中包含的任何标准库都出错了.一个简单的例子: //ex.cpp#includeint ..
发布时间:2021-09-12 19:14:16 C/C++开发

安装凿子

我是 chisel 的新用户.我试图在我的机器上安装凿子.根据git,首先我克隆了chisel,然后进入hello目录输入制作.但我收到以下错误: set -e -o pipefail;sbt -Dsbt.log.noformat=true -DchiselVersion="latest.release" "运行你好 --genHarness --compile --test --backend ..
发布时间:2021-07-15 21:26:38 其他开发

如何在LLVM IR中使用RISC-V向量(RVV)指令?

在本演示文稿Kruppe和Espasa在 https://github.com/hanna-kruppe/rvv-llvm .但是,该存储库现在已存档,并且README文件指示该存储库已过时,因为现在已在上游开发了对RISC-V V扩展的支持.我认为这意味着这些功能现在可以从 https://github.com/llvm的LLVM主机中获得./llvm-project . 但是,当我拉出当 ..
发布时间:2021-05-30 19:41:08 其他开发

如何运行在Linux上动态链接的ELF 64位LSB可执行文件UCB RISC-V,版本1(GNU/Linux)

我正在尝试使用目标Architecture RISC-V对用C ++编写的代码进行性能分析.该代码已使用RISC-V GNU工具链交叉编译.我的可执行文件是unit_tests"ELF 64位LSB可执行文件,UCB RISC-V,版本1(GNU/Linux),动态链接,对于GNU/Linux 4.15,是/lib/ld-linux-riscv64-lp64d.so.1..0,带有debug_in ..
发布时间:2021-05-30 18:38:56 其他开发

RISC-V中断处理流程

我正在寻找RISC-V处理器如何处理中断请求. 我查看了《指令集手册》和互联网上的信息.重点在于准确解释标题设置的内容:指令集.在我看来,如何处理中断是一个问题,即所谓的处理器“程序员模型".由于中断处理的某些部分未在指令中表达,因此它显然不适合有关指令集的文档.显然,进入ISR不是 一条显示在程序代码中任何地方的指令.指令集手册提供了诸如 mret 和 mstatus 的描述,但未能提供整 ..
发布时间:2021-05-16 19:48:49 其他开发

Risc-V:能够利用GCC的简单RV32I实现的最低CSR要求

能够运行由GCC生成的机器代码的RV32I的最低CSR要求是什么? 我正在考虑一个基于fpga的简单(嵌入式)实现.不需要虚拟内存或linux支持. 此外,为了防止它使用未执行的CSR相关指令,我应该使用哪些GCC标志? 浏览RISCV特权ISA规范后,我仍然很困惑. 谢谢! 解决方案 看看 RARS 模拟器作为简单RISC V实现的示例.它实现了足够的CSR(例如 ..
发布时间:2021-05-09 20:55:59 其他开发

移植linux以定制RISC-V imafd SOC

我正在尝试为我的自定义risc-v SOC构建yocto demo-coreip-cli 映像,该映像仅支持 imafd 指令.对于Bitbake使用的交叉工具链的编译,我尝试通过在开放嵌入核心层中添加" –with-arch = rv64imafd "来更改cross-binutils.inc配方和cross-gcc.inc配方.在" EXTRA_OECONF "中多变的.还有其他我想念或做错的 ..
发布时间:2021-04-25 18:38:50 其他开发

RISC-V呼叫约定的ABI注册名称

我对RISC-V ABI寄存器名称感到困惑.例如,第85页的"RISC-V指令集手册,第I卷:用户级ISA,版本2.0"中的表18.2指定堆栈指针 sp 是寄存器 x14 .但是,说明 addi sp,zero,0 riscv64-unknown-elf-as将 编译为0x00000113( -m32 没有区别).二进制: 000000000000 00000 000 00010 0 ..
发布时间:2021-04-24 21:09:48 其他开发

如何编写Risc-V(汇编语言)的NOT操作?

如何为Risc-V(汇编语言)编写“非"运算?如果没有NOT指令,您如何实现同一目标? 解决方案 类似于MIPS和其他一些体系结构,RISC V并未针对许多事物提供专用指令,包括二操作数一元操作,因为这些操作可以通过使用它们的操作来实现.三操作数格式,通常将 x0 作为第三个操作数,但有时将常量 1 或 -1 作为第三个操作数. 为方便起见,汇编程序将接受这些一元操作(和其他操作)的 ..
发布时间:2021-04-15 20:02:42 其他开发

如何使用GDB调试交叉编译的QEMU程序?

我无法调试使用GDB在QEMU中运行的简单程序. GDB似乎无法找到我在程序中的位置(因为它始终将??显示为我的当前位置),并且它从未达到我设置的任何断点. 在一个终端中,我运行QEMU: $ cat add.c int main() { int x = 9; int v = 1; while (1) { int q = x + v; } ..
发布时间:2020-11-13 01:41:15 其他开发

从微体系结构抽象的x86程序计数器?

我正在阅读 RISC-V Reader:开放式体系结构图集。作者在解释ISA(指令集体系结构)与特定实现(即微体系结构)的隔离时写道: 对于架构师来说,诱惑在于将指令包含在ISA中,以帮助在特定时间实现一种实现的性能或成本,但会负担不同的或将来的实现。 据我了解,它指出,在设计ISA时,ISA应该理想地避免公开实现它的特定微体系结构的细节。 请牢记上面的引号:当涉及程序计数器时, ..

RISC-V:立即编码变体

在RISC-V指令集手册(用户级ISA)中,我无法理解第2.3节“立即编码变体”第11页。 有四种类型的指令格式为R,I,S和U,则有S和U类型的一种变体,分别是SB和UJ,我想表示分行和跳转,如图2.3所示。然后就是RISC-V指令产生的即时类型,如图2.4所示。 所以我的问题是,为什么需要SB和UJ?为什么要用这种方式改组立即数?说“由RISC-V指令生成的立即数”是什么意思? ..

为什么分支延迟槽已过时或过时?

当我阅读RISC-V用户级ISA手册时,我注意到它说:“ OpenRISC具有条件代码和分支延迟时隙,这会使更高性能的实现复杂化。”因此RISC-V没有分支延迟槽 RISC-V用户级ISA手册链接。此外,维基百科说,大多数新的RISC设计都省略了分支延迟槽。为什么大多数较新的RISC体系结构会逐渐省略分支延迟槽? Fallacy:您可以设计一个完美的体系结构。 所有体系结构设计都需要在 ..
发布时间:2020-10-10 23:46:20 其他开发

Makefile只能执行一次配置吗?

我试图创建一个可以编译一些文件并创建一些输出的Makefile,但首先我希望它仅执行一次配置,下次我键入一次使其不重新执行配置,除非我更改参数,例如前缀。 我尝试使用 touch,FORCE和if ,在其他帖子中搜索了一下之后,但是我在gcc和Makefiles中是新手,所以我无法做到 我的代码现在是(不包括其他规则,因为它们不会影响配置): XLEN:= 32 RISCV ..
发布时间:2020-10-08 02:21:55 其他开发