mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
Debugging RuleSless2Zero
This commit is contained in:
parent
6e44b809b9
commit
b0a54473df
1 changed files with 30 additions and 30 deletions
|
@ -5280,7 +5280,6 @@ int4 RuleSLess2Zero::applyOp(PcodeOp *op,Funcdata &data)
|
|||
}
|
||||
}
|
||||
else if (lvn->getOffset() == calc_mask(lvn->getSize())) {
|
||||
if (op->code() == CPUI_INT_SLESS) {
|
||||
multop = rvn->getDef();
|
||||
Varnode *hibit = getHiBit(multop);
|
||||
if (hibit != (Varnode *) 0) { // Test for -1 s< (hi ^ lo)
|
||||
|
@ -5294,8 +5293,9 @@ int4 RuleSLess2Zero::applyOp(PcodeOp *op,Funcdata &data)
|
|||
}
|
||||
else if (multop->code() == CPUI_SUBPIECE) {
|
||||
avn = multop->getIn(0);
|
||||
if (avn->isFree()) return 0;
|
||||
if (avn->getSize() + (int4)multop->getIn(1)->getOffset() == rvn->getSize()) {
|
||||
if (avn->isFree())
|
||||
return 0;
|
||||
if (rvn->getSize() + (int4) multop->getIn(1)->getOffset() == avn->getSize()) {
|
||||
// We have -1 s< SUB( avn, #hi )
|
||||
data.opSetInput(op, avn, 1);
|
||||
data.opSetInput(op, data.newConstant(avn->getSize(), calc_mask(avn->getSize())), 0);
|
||||
|
@ -5305,14 +5305,14 @@ int4 RuleSLess2Zero::applyOp(PcodeOp *op,Funcdata &data)
|
|||
else if (multop->code() == CPUI_INT_NEGATE) {
|
||||
// We have -1 s< ~avn
|
||||
avn = multop->getIn(0);
|
||||
if (avn->isFree()) return 0;
|
||||
if (avn->isFree())
|
||||
return 0;
|
||||
data.opSetInput(op, avn, 0);
|
||||
data.opSetInput(op, data.newConstant(avn->getSize(), 0), 1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (rvn->isConstant()) {
|
||||
if (!lvn->isWritten()) return 0;
|
||||
if (rvn->getOffset() == 0) {
|
||||
|
@ -5327,7 +5327,7 @@ int4 RuleSLess2Zero::applyOp(PcodeOp *op,Funcdata &data)
|
|||
data.opSetInput(op,rvn,0);
|
||||
return 1;
|
||||
}
|
||||
else if (op->code() == CPUI_INT_SLESS) {
|
||||
else {
|
||||
Varnode *hibit = getHiBit(multop);
|
||||
if (hibit != (Varnode *)0) { // Test for (hi ^ lo) s< 0
|
||||
if (hibit->isConstant())
|
||||
|
@ -5340,7 +5340,7 @@ int4 RuleSLess2Zero::applyOp(PcodeOp *op,Funcdata &data)
|
|||
else if (multop->code() == CPUI_SUBPIECE) {
|
||||
avn = multop->getIn(0);
|
||||
if (avn->isFree()) return 0;
|
||||
if (avn->getSize() + (int4)multop->getIn(1)->getOffset() == lvn->getSize()) {
|
||||
if (lvn->getSize() + (int4)multop->getIn(1)->getOffset() == avn->getSize()) {
|
||||
// We have SUB( avn, #hi ) s< 0
|
||||
data.opSetInput(op,avn,0);
|
||||
data.opSetInput(op,data.newConstant(avn->getSize(),0),1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue