是否可以扩展RocketChip中可用的寄存器集?如果是这样,我该怎么办? 我正在尝试添加一条新指令,可以将数据从现有的RISCV寄存器移动到一组扩展寄存器。扩展RocketChip寄存器
0
A
回答
1
可能吗?火箭芯片和相应的RISC-V工具链是免费和开放源代码的,所以是的,你当然可以修改它以适应你的内容(当然也没有什么技术可以阻止你这么做)。
但是,这将是一个涉及很多东西的巨大项目,因此您必须分段攻击每个部分。关于ISA,你必须从以下开始:
1)学习如何向GNU汇编程序“gas”添加指令。
由于您试图添加一组全新的寄存器(而不是扩展现有的整数集或浮点集),因此这将比平常更加困难。我可能会先看看向量寄存器是如何处理的。
2)一旦你可以生成你想要的汇编代码,你需要修改尖峰ISA模拟器来执行和测试你的程序。这很简单 - 但是你必须盯着代码库一段时间,并学习如何向它添加新的指令(参见riscv.org关于如何添加自定义指令和加速器到秒杀)。 3)一旦你可以生成代码并在ISA模拟器上进行测试,那么你就可以继续攻击Rocket-chip本身。火箭核心是一个相对直接的5阶段,有序的管道,所以你可以自己创造如何添加一个新的寄存器组。查看浮点单元代码和浮点寄存器文件以获取灵感。
但我是一个gcc的家伙,也许你的冒险会更容易做到llvm?
相关问题
- 1. 编程的Eclipse寄存器扩展点
- 2. Windbg .IF与扩展寄存器失败
- 3. GCC错误:扩展寄存器没有高一半
- 4. 试图扩展寄存器risc ISA(尖峰),但得到seg-fault
- 5. 如何做符号的反义扩展从一个16位寄存器到一个8位寄存器?
- 6. XOR寄存器,寄存器(汇编)
- 7. 解释GDB寄存器(SSE寄存器)
- 8. 此TPM仿真器是否遵循TPM规范来扩展PCR寄存器?
- 9. 寄存器JS
- 10. 与寄存器
- 11. 的寄存器
- 12. 寄存器
- 13. 通过由gcc的扩展asm调用的systemcall修改的寄存器
- 14. 扩展扩展管理器
- 15. GDB寄存器与处理器寄存器不同吗?
- 16. XMM寄存器值
- 17. 寄存器读取
- 18. 寄存器工作
- 19. MPLAB Trace寄存器
- 20. 确定寄存器
- 21. Pthread段寄存器
- 22. 寄存器功能
- 23. ERLANG - wxGrid寄存器
- 24. 通用寄存器
- 25. MIPS $ gp寄存器
- 26. Directx 11寄存器
- 27. Modbus TCP寄存器
- 28. 寄存器值8086
- 29. MIPS寄存器保存
- 30. XMM寄存器存储
Hello Chris,谢谢你的回答。我对使用火箭核心相当陌生。另一个疑问是,如何添加一组与现有的整数集不同的新的寄存器,如您所述。 – umaurmi