[capstone2llvmir]: 缺少注册号的类型: 244
作者: dedz212创建于 2026年3月20日更新于 2026年9月18日
环境
- retdec 版本: v5.0
- 操作系统: Windows 11
- 目标二进制文件: MSVC 6.0 / 32 位 PE (x86)
命令
retdec-decompiler YDKJ6.exe输出
运行阶段: 解压 (0.08 秒)
没有找到与 'Microsoft Linker 6.0' 匹配的插件
没有找到与 'MSVC 6.0' 匹配的插件
没有找到与 'Microsoft' 匹配的插件
运行阶段: 初始化 (0.22 秒)
运行阶段: 提供程序初始化 (0.26 秒)
运行阶段: 将输入二进制文件解码为 LLVM IR (0.78 秒)
[capstone2llvmir]: 缺少对寄存器编号 244 的类型
### 分析
寄存器 244 对应于 `X86_REG_PF` (奇偶标志),定义在 `include/retdec/capstone2llvmir/x86/x86_defs.h` 中:
```cpp
enum x86_reg_rflags
{
X86_REG_CF = X86_REG_ENDING + 1, // = 243
// 保留 1
X86_REG_PF, // = 244
...
};错误源于 src/capstone2llvmir/capstone2llvmir_impl.cpp 中的 getRegisterType():
llvm::Type* getRegisterType(uint32_t r) const
{
auto fIt = _reg2type.find(r);
if (fIt == _reg2type.end())
{
throw GenericError(
"Missing type for register number: " + std::to_string(r));
}
return fIt->second;
}X86_REG_PF = 244 在我使用的版本中缺失了 _reg2type 映射表中。请注意:检查当前的 master,X86_REG_PF 似乎已经在 _reg2type 中存在 - 因此此错误可能在我使用的版本之后被修复了。上面的版本字段可帮助确定这是否是一个回退或已知的已修复问题。
内容来源: avast/retdec