Rocket - core - IDecode

https://mp.weixin.qq.com/s/mTHnVCxOk04nDQbqpr5xnw

 

简单介绍IDecode的实现。

 

 

1. DecodeConstants

 

定义了解码相关的常量,也就是每条指令对应的解码信号的值。这些是在指令集编码设计的时候确定的,所以落实到代码中是常量。

 

2. IntCtrlSigs

 

定义指令解码信号:

 

default是解出信号的默认值:

 

decode是解码方法:

这在之前已经做过介绍了。

 

3. IDecode

 

Base Integer Instruction Set中指令的解码信息:

 

4. FenceIDecode

 

定义FENCE.I指令的解码信息:

 

5. CFlushDecode

 

定义CFLUSH指令的解码信息:

 

6. SDecode

 

定义supervisor特有指令的解码信息:

 

7. DebugDecode

 

定义调试指令的解码信息:

 

8. I32Decode

 

定义RV32I中SLLI等指令的解码信息:

 

9. I64Decode

 

定义RV64I新增指令的解码信息:

 

10. MDecode

 

定义32位乘除法相关指令的解码信息:

 

11. M64Decode

 

定义64位乘除法相关指令的解码信息:

 

12. ADecode

 

定义32位原子操作相关指令的解码信息:

 

13. A64Decode

 

定义64位原子操作相关指令的解码信息:

 

14. FDecode

 

定义浮点运算相关指令的解码信息:

 

15. DDecode

 

定义双精度浮点运算相关指令的解码信息:

 

16. F64Decode

 

定义64位浮点运算相关指令的解码信息:

 

17. D64Decode

 

定义64位双精度浮点运算相关指令的解码信息:

 

18. SCIEDecode

 

定义扩展指令(SCIE: Simple Custom Instruction Extention)相关解码信息:

 

19. RoCCDecode

 

定义自定义协处理器(RoCC: Rocket Custom Coprocessor)相关指令的解码信息:

 

posted @ 2022-03-22 20:02  wjcdx  阅读(183)  评论(0编辑  收藏  举报