commit
bae2a582f1
3
3rd_party/libdisasm/libdis.h
vendored
3
3rd_party/libdisasm/libdis.h
vendored
@ -317,6 +317,9 @@ struct x86_op_t{
|
|||||||
case op_offset:
|
case op_offset:
|
||||||
return data.offset;
|
return data.offset;
|
||||||
case op_relative_far:
|
case op_relative_far:
|
||||||
|
if (data.relative_far & 0x8000)
|
||||||
|
return (data.relative_far & 0xFFFF) | 0xFFFF0000;
|
||||||
|
else
|
||||||
return (int32_t)data.relative_far;
|
return (int32_t)data.relative_far;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
|
|||||||
@ -330,7 +330,7 @@ static void decodeBranchTgt(x86_insn_t &insn)
|
|||||||
int32_t addr = tgt_op->getAddress();
|
int32_t addr = tgt_op->getAddress();
|
||||||
if(tgt_op->is_relative())
|
if(tgt_op->is_relative())
|
||||||
{
|
{
|
||||||
addr += insn.addr+insn.size;
|
addr = (uint16_t)(addr + insn.addr + insn.size);
|
||||||
}
|
}
|
||||||
pIcode->ll()->replaceSrc((uint32_t)addr);
|
pIcode->ll()->replaceSrc((uint32_t)addr);
|
||||||
pIcode->ll()->setFlags(I);
|
pIcode->ll()->setFlags(I);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user