是否可以扩展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. XALAN寄存器扩展功能像SAXON
- 4. 试图扩展寄存器risc ISA(尖峰),但得到seg-fault
- 5. GCC错误:扩展寄存器没有高一半
- 6. SSE指令克隆扩展XMM寄存器
- 7. 如何做符号的反义扩展从一个16位寄存器到一个8位寄存器?
- 8. XOR寄存器,寄存器(汇编)
- 9. 此TPM仿真器是否遵循TPM规范来扩展PCR寄存器?
- 10. 寄存器JS
- 11. 通过由gcc的扩展asm调用的systemcall修改的寄存器
- 12. 扩展扩展管理器
- 13. ERLANG - wxGrid寄存器
- 14. 寄存器读取
- 15. 寄存器值8086
- 16. 通用寄存器
- 17. Directx 11寄存器
- 18. Modbus TCP寄存器
- 19. MIPS $ gp寄存器
- 20. 确定寄存器
- 21. XMM寄存器存储
- 22. 处理器寄存器
- 23. 使用FPU和MMX寄存器作为“通用寄存器”
- 24. 在CPU寄存器中分配寄存器变量的标准?
- 25. 32位寄存器作为8位寄存器
- 26. MIPS中的浮点寄存器是哪些数字寄存器?
- 27. MIPS:将寄存器地址复制到另一个寄存器
- 28. 在C++中实现寄存器/取消寄存器模式
- 29. Verilog:将寄存器分配给寄存器
- 30. 寄存器和临时寄存器有什么区别?
Hello Chris,谢谢你的回答。我对使用火箭核心相当陌生。另一个疑问是,如何添加一组与现有的整数集不同的新的寄存器,如您所述。 – umaurmi