- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试使用 as 和 gcc 在 Linux 中编译 RISC V 程序集。
模拟器是 TinyEmu,busybox 拥有所有实用程序。 TinyEmu
镜像是diskimage-linux-riscv-2018-09-23。
我可以让程序编译,但控制台上没有打印任何内容。
.section .text
.globl _start
_start:
li a0, 0 # stdout
1: auipc a1, %pcrel_hi(msg) # load msg(hi)
addi a1, a1, %pcrel_lo(1b) # load msg(lo)
li a2, 12 # length
li a3, 0
li a7, 64 # _NR_sys_write
ecall # system call
li a0, 0
li a1, 0
li a2, 0
li a3, 0
li a7, 93 # _NR_sys_exit
ecall # system call
loop:
j loop
.section .rodata
msg:
.string "Hello World\n"
我尝试了几种 as 和 gcc 调用的组合,但最近的是:
as -o hello.o hello.s
ld as -o hello.o hello.s
这会创建一个二进制文件,但没有控制台输出。
那么,ld 和/或 gcc 命令将获得一个可执行文件,该可执行文件可以正确调用系统调用以打印到控制台?
此外,Linux on RISC V 系统调用的引用资料在哪里? (我找到了 x86 资源,但我没有测试它们是否与系统调用表匹配)。
最佳答案
输出设置为 stdout 的行将变为 0 而不是 1。
这里是固定线路:
li a0, 1 # stdout
关于linux - 如何从 RISC V 程序集打印到 Linux 中的控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57228650/
什么是RISC-V?它为什么被创建?与之前的 RISC 架构相比,它有哪些改进? (这是 StackOverflow 上 RISC-V 的 wiki。) 最佳答案 RISC-V 是一种指令集架构 (I
我有一些代码主要用 C 语言编写,可以在 HP-UX PA-RISC、HP-UX Itanium 和 Solaris SPARC 平台上编译。 到目前为止,我的 PA-RISC 机器已停产,这是不真实
我即将使用 CLINT 编写我自己的 RV32I 内核。但是,有些事情对我来说并不完全清楚。至少我在文档中找不到它。以下是特权 isa 规范对 ecall/ebreak 的说明: ECALL and
在浏览 RISC-V ISA 时,我在内存模型部分看到了一条指令(FENCE 指令)。究竟是什么意思? 最佳答案 RISC-V ISA 使用宽松的内存模型,其中一个线程执行的加载和存储顺序在另一个线程
RISC-V 当前软件权限级别未在任何 CSR 中设置。尽管如此,规范指出“尝试在没有适当权限级别的情况下访问 CSR ......引发非法指令”。那么如何实现(在硬件中)? 最佳答案 好吧,在中断上
我最近正在研究 RISC-V 32I 指令。我有一个关于 NOP 指令的问题,规范称它等于 ADDI x0, x0, 0。 但是,x0不是一个可以由程序员修改的通用寄存器。那么,为什么x0在这里充当N
我正在寻找在游戏中构建一个虚拟机,并且想知道是否有人知道任何非常简单的虚拟机(我认为 RISC/PIC 接近我想要的),通常用于嵌入式项目,例如控制机器人、电机、传感器等。我主要关心的是如果我自己编写
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
如果您正在写一本教科书,并且需要决定 CPU 设计来讨论某些问题,您会选择 RISC 还是 CISC? RISC 的优点,你知道的:更干净、更简单等等。 RISC 的缺点:我必须使用模拟器,与 x86
我没有在ISA 2.0中看到任何有关IO的信息。 RISC-V IO存储器是否已映射?是否有关于如何完成IO的规范? 我可以定义自己的方法吗? TIA。 最佳答案 是的,它是内存映射的。确切的规格仍在
你好,我正在写一个小内核来更好地理解 RISC-V。到目前为止,我设法使用 UART 并设置了一个简单的内存管理器。为了能够解析用户输入,我设置了一个中断处理程序并将其地址设置为 MTVEC。然后我在
我在哪里可以找到支持 "V" Vector Extension 的 RISC-V 模拟器? 我知道当前规范版本 0.8 是草案: This is a draft of a stable proposa
我目前正在通过 RISC-V 学习基本的汇编语言,我对遍历数组的有效方法有点困惑。 如果我们将 a0 作为指向整数数组的指针,是否足以移动到下一个元素? lw s0, 0(a0) #指向数组的指针存储
我正在寻找支持 RISC-V 向量扩展 v1.0 的 C/C++ 工具链,如官方定义 spec . Spike似乎支持 vector rvv1.0,但我找不到与之一起使用的工具链。 都不是GCC (我
故意在 RISC-V 中引发非法指令的最简单、最易读和最直接的方法是什么? 我知道根据规范,任何“全零”指令(因此 32/16 位仅零)都是“定义的非法指令”(第 12.5 节,用户规范)。但是我不知
这是《汇编语言简介》一书中关于RISC(与CISC)的引述 In MIPS, we could write procedures without using the stack. For most n
我目前正在研究具有规范版本 2.2 和特权架构版本 1.10 的 RISC-V 规范。在 RISC-V 规范的第 2 章中,提到“[...] 尽管一个简单的实现可能涵盖了八个 SCALL/SBREAK
RISC-V 汇编器中的大多数指令在源操作数之前对目标操作数进行排序,例如: li t0, 22 # destination, source li t1, 1 # d
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我正在 QEMU 中运行一个模拟的 RV64GC 内核,并试图更好地理解 RISC-V 中的虚拟内存子系统和地址转换过程。我的模拟系统使用 OpenSBI、Linux Kernal v5.5 和最小的
我是一名优秀的程序员,十分优秀!