我正在为radare2开发asm插件。我实现了反汇编函数,所以它使用以下命令返回反汇编指令:
r_strbuf_set (&op->buf_asm, line);然而,在打印反汇编程序之前,我收到了一堆警告:
WARNING: r_reg_get: assertion 'reg && name' failed (line 296)这发生在我的反汇编函数完成后,对于我的代码处理的每条指令。这种错误的来源可能是什么?它似乎与操作码结构无关,我填充的是寄存器名称。除了asm插件之外,还需要实现肛门插件吗?通常,我看到两者都适用于支持的体系结构。
发布于 2019-10-09 02:39:51
实现虚拟肛门插件就足以防止出现此警告。我添加了以下函数,并将其传递给了新插件:
static int mycpu_op(RAnal *anal, RAnalOp *op, ut64 addr, const ut8 *b, int len) {
r_strbuf_init (&op->esil);
op->size = 4;
return op->size;
}之后,它被指向如下:
RAnalPlugin r_anal_plugin_mycpu = {
.name = "mycpu",
.desc = "Long name",
.license = "LGPL3",
.bits = 32,
.op = &mycpu_op
}
#ifndef R2_PLUGIN_INCORE
R_API RLibStruct radare_plugin = {
.type = R_LIB_TYPE_ANAL,
.data = &r_anal_plugin_mycpu,
.version = R2_VERSION
};
#endifhttps://stackoverflow.com/questions/58189287
复制相似问题