isa 模块注释完善:Doxygen 风格。

- Types.h:定宽类型、TypeTag、饱和四则的 @brief/@param/@return
- Op.h:Op 枚举冻结约束、OpFormat/OpClass、OpDef/kOpDefs 表、三个查询函数
- Instr.h:指令字布局、pack/拆字段、按形态 enc_* 系列
- Encode.h/.cpp:Decoded 字段语义、encode/decode/disasm 契约
This commit is contained in:
2026-08-21 23:19:08 +08:00
parent 6873b5ee0b
commit 96607cfe75
5 changed files with 237 additions and 42 deletions
+19 -1
View File
@@ -1,6 +1,6 @@
/**
* @file Encode.cpp
* @brief 指令编解码与反汇编
* @brief 指令编解码与反汇编实现
* @author
* @date 2026-08-19
*/
@@ -11,10 +11,20 @@
namespace isa {
/**
* @brief 编码:字段视图打包成一条 32 位指令字。
* @param d 解码后的字段视图
* @return 打包后的指令字;满足 encode(decode(w)) == w
*/
Instr encode(Decoded d) {
return pack(d.op, d.rd, d.a, d.b);
}
/**
* @brief 解码:指令字拆成字段视图。
* @param w 32 位指令字
* @return 各字段视图
*/
Decoded decode(Instr w) {
Decoded d;
d.op = op(w);
@@ -24,6 +34,14 @@ Decoded decode(Instr w) {
return d;
}
/**
* @brief 反汇编一条指令为一行文本。
* @param w 指令字
* @param out 输出缓冲
* @param cap 缓冲容量(含 '\0');cap==0 时直接返回、不写 out
* @details 按操作数形态表驱动输出,文本与 Doc/isa/指令与映像.md 一致;
* 未知操作码输出 `??? 0x<w>`。
*/
void disasm(Instr w, char* out, size_t cap) {
if (cap == 0) {
return;