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)相关指令的解码信息: