Fixes to libdisasm, also use it a bit more
This commit is contained in:
@@ -414,13 +414,14 @@ eReg convertRegister(const x86_reg_t ®)
|
|||||||
|
|
||||||
eReg regmap[]={ rUNDEF,
|
eReg regmap[]={ rUNDEF,
|
||||||
rUNDEF,rUNDEF,rUNDEF,rUNDEF, //eax ecx ebx edx
|
rUNDEF,rUNDEF,rUNDEF,rUNDEF, //eax ecx ebx edx
|
||||||
rUNDEF,rUNDEF,rUNDEF,rUNDEF, //esp ebp esi edi
|
rSP,rUNDEF,rUNDEF,rUNDEF, //esp ebp esi edi
|
||||||
rAX,rCX,rDX,rBX,
|
rAX,rCX,rDX,rBX,
|
||||||
rSP,rBP,rSI,rDI,
|
rSP,rBP,rSI,rDI,
|
||||||
rAL,rCL,rDL,rBL,
|
rAL,rCL,rDL,rBL,
|
||||||
rAH,rCH,rDH,rBH
|
rAH,rCH,rDH,rBH
|
||||||
};
|
};
|
||||||
assert(reg.id<sizeof(regmap)/sizeof(eReg));
|
assert(reg.id<sizeof(regmap)/sizeof(eReg));
|
||||||
|
assert(regmap[reg.id]!=rUNDEF);
|
||||||
return regmap[reg.id];
|
return regmap[reg.id];
|
||||||
}
|
}
|
||||||
LLOperand convertOperand(const x86_op_t &from)
|
LLOperand convertOperand(const x86_op_t &from)
|
||||||
@@ -480,8 +481,15 @@ eErrorId scan(uint32_t ip, ICODE &p)
|
|||||||
if(p.insn.x86_get_branch_target())
|
if(p.insn.x86_get_branch_target())
|
||||||
decodeBranchTgt(p.insn);
|
decodeBranchTgt(p.insn);
|
||||||
}
|
}
|
||||||
// LLOperand conv = convertOperand(*p.insn.get_dest());
|
x86_op_t *dst_op = p.insn.get_dest();
|
||||||
// assert(conv==p.ll()->dst);
|
static int only_first=1;
|
||||||
|
if(dst_op && only_first)
|
||||||
|
{
|
||||||
|
only_first = 0;
|
||||||
|
LLOperand conv = convertOperand(*dst_op);
|
||||||
|
p.ll()->dst=conv;
|
||||||
|
//assert(conv==p.ll()->dst);
|
||||||
|
}
|
||||||
if (p.ll()->getOpcode())
|
if (p.ll()->getOpcode())
|
||||||
{
|
{
|
||||||
/* Save bytes of image used */
|
/* Save bytes of image used */
|
||||||
|
|||||||
Reference in New Issue
Block a user