我有以下工作:
根据任务选项更改项目:
一个。编辑 RISC-V ISA 测试列表
./sim/tests/riscv-isa/rv32_tests.inc,只留下作业中指定的测试;湾。编辑
./Makefile以使目标tests仅构建选定的 RISC-V ISA 测试;C。修改文件
RVTEST_PASS中的宏。RVTEST_FAIL./sim/tests/common/riscv_macros.h我的作业选项表的摘录:
+--------+-------------------+--------------+-----+-----------------------------------+ | Вар. 1 | Тест | RESET VECTOR | BUS | Результат теста | +--------+-------------------+--------------+-----+-----------------------------------+ | 1 | isa/rv32ui.addi.S | 0x400 | AXI | RVTEST_PASS выводит строку "ok", | | | | | | RVTEST_FAIL выводит строку "fail" | +--------+-------------------+--------------+-----+-----------------------------------+
我不知道如何执行点 C,即如何输出一行文本。
我的假设
宏本身RVTEST_PASS看起来RVTEST_FAIL 像这样(链接到riscv_macros.hGitHub 上存储库中的文件行),如下所示:
//-----------------------------------------------------------------------
// Pass/Fail Macro
//-----------------------------------------------------------------------
#define RVTEST_PASS \
fence; \
mv a1, TESTNUM; \
li a0, 0x0; \
ecall
#define TESTNUM x28
#define RVTEST_FAIL \
fence; \
mv a1, TESTNUM; \
li a0, 0x1; \
ecall
该目录sim/tests/common/包含文件sc_print.h,sc_print.c其中包含函数sc_printf。
此函数用于hello仅输出一行文本的测试:
// sim/tests/hello/hello.c
#include "sc_print.h"
int main()
{
sc_printf("Hello from SCR1!\n");
return 0;
}
我是否正确理解我需要将函数调用sc_printf插入宏RVTEST_PASS和RVTEST_FAIL?如果是,如何做到这一点?
感谢@Fat-Zer 的提示:
如您所见,该函数
sc_puts只是在地址处逐字节写入字符串的字符SC_SIM_OUTPORT。只需要在汇编器中编写它: