Last chance attempt to find LOAD/STORE

This commit is contained in:
caheckman 2020-01-23 17:08:28 -05:00
parent 46e8a54948
commit 72d6b15133
2 changed files with 11 additions and 2 deletions

View file

@ -1087,9 +1087,10 @@ void Architecture::parseProcessorConfig(DocumentStorage &store)
parseLaneSizes(*iter); parseLaneSizes(*iter);
} }
else if (elname == "data_space") { else if (elname == "data_space") {
AddrSpace *spc = getSpaceByName(el->getAttributeValue("space")); const string &spaceName( (*iter)->getAttributeValue("space"));
AddrSpace *spc = getSpaceByName(spaceName);
if (spc == (AddrSpace *)0) if (spc == (AddrSpace *)0)
throw LowlevelError("Undefined space: "+el->getAttributeValue("space")); throw LowlevelError("Undefined space: "+spaceName);
setDefaultDataSpace(spc->getIndex()); setDefaultDataSpace(spc->getIndex());
} }
else if (elname == "segmented_address") { else if (elname == "segmented_address") {

View file

@ -964,6 +964,14 @@ AddrSpace *ActionConstantPtr::searchForLoadStore(Varnode *vn,PcodeOp *op)
} }
if (op == (PcodeOp *)0) break; if (op == (PcodeOp *)0) break;
} }
for(list<PcodeOp *>::const_iterator iter=vn->beginDescend();iter!=vn->endDescend();++iter) {
op = *iter;
OpCode opc = op->code();
if (opc == CPUI_LOAD)
return Address::getSpaceFromConst(op->getIn(0)->getAddr());
else if (opc == CPUI_STORE && op->getIn(1) == vn)
return Address::getSpaceFromConst(op->getIn(0)->getAddr());
}
return (AddrSpace *)0; return (AddrSpace *)0;
} }