gpt4 book ai didi

linux - 如何从 RISC V 程序集打印到 Linux 中的控制台

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:16 24 4
gpt4 key购买 nike

我尝试使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com