mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-02-14 22:50:16 +00:00
Move segmentop tags into pspec
This commit is contained in:
parent
00460b9c65
commit
74df84bed8
@ -167,7 +167,6 @@ void SegmentOp::restoreXml(const Element *el)
|
||||
injectId = -1;
|
||||
baseinsize = 0;
|
||||
innerinsize = 0;
|
||||
bool userdefined = false;
|
||||
supportsfarpointer = false;
|
||||
name = "segment"; // Default name, might be overridden by userop attribute
|
||||
for(int4 i=0;i<el->getNumAttributes();++i) {
|
||||
@ -177,19 +176,16 @@ void SegmentOp::restoreXml(const Element *el)
|
||||
supportsfarpointer = true;
|
||||
else if (nm == "userop") { // Based on existing sleigh op
|
||||
name = el->getAttributeValue(i);
|
||||
UserPcodeOp *otherop = glb->userops.getOp(name);
|
||||
if (otherop != (UserPcodeOp *)0) {
|
||||
userdefined = true;
|
||||
useropindex = otherop->getIndex();
|
||||
if (dynamic_cast<UnspecializedPcodeOp *>(otherop) == (UnspecializedPcodeOp *)0)
|
||||
throw LowlevelError("Redefining userop "+name);
|
||||
}
|
||||
}
|
||||
else
|
||||
throw LowlevelError("Bad segmentop tag attribute: "+nm);
|
||||
}
|
||||
if (!userdefined)
|
||||
throw LowlevelError("Missing userop attribute in segmentop tag");
|
||||
UserPcodeOp *otherop = glb->userops.getOp(name);
|
||||
if (otherop == (UserPcodeOp *)0)
|
||||
throw LowlevelError("<segmentop> unknown userop " + name);
|
||||
useropindex = otherop->getIndex();
|
||||
if (dynamic_cast<UnspecializedPcodeOp *>(otherop) == (UnspecializedPcodeOp *)0)
|
||||
throw LowlevelError("Redefining userop "+name);
|
||||
|
||||
const List &list(el->getChildren());
|
||||
List::const_iterator iter;
|
||||
|
@ -3,6 +3,19 @@
|
||||
<processor_spec>
|
||||
<programcounter register="PC"/>
|
||||
|
||||
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||
<pcode>
|
||||
<input name="base" size="2"/>
|
||||
<input name="inner" size="2"/>
|
||||
<output name="res" size="2"/>
|
||||
<body><![CDATA[
|
||||
res = (base << 12) + inner;
|
||||
]]></body>
|
||||
</pcode>
|
||||
<constresolve>
|
||||
<register name="rBBR"/>
|
||||
</constresolve>
|
||||
</segmentop>
|
||||
<context_data>
|
||||
<tracked_set space="ram">
|
||||
<set name="DECOMPILE_MODE" val="1"/>
|
||||
|
@ -1,6 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<processor_spec>
|
||||
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||
<pcode>
|
||||
<input name="base" size="2"/>
|
||||
<input name="inner" size="2"/>
|
||||
<output name="res" size="2"/>
|
||||
<body><![CDATA[
|
||||
res = (base << 12) + inner;
|
||||
]]></body>
|
||||
</pcode>
|
||||
<constresolve>
|
||||
<register name="rBBR"/>
|
||||
</constresolve>
|
||||
</segmentop>
|
||||
<context_data>
|
||||
<context_set space="ram">
|
||||
<set name="assume8bitIOSpace" val="1"/>
|
||||
|
@ -9,19 +9,6 @@
|
||||
<range space="io"/>
|
||||
</global>
|
||||
<stackpointer register="SP" space="ram"/>
|
||||
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||
<pcode>
|
||||
<input name="base" size="2"/>
|
||||
<input name="inner" size="2"/>
|
||||
<output name="res" size="2"/>
|
||||
<body><![CDATA[
|
||||
res = (base << 12) + inner;
|
||||
]]></body>
|
||||
</pcode>
|
||||
<constresolve>
|
||||
<register name="rBBR"/>
|
||||
</constresolve>
|
||||
</segmentop>
|
||||
<default_proto>
|
||||
<prototype name="__asmA" extrapop="2" stackshift="2" strategy="register">
|
||||
<input>
|
||||
|
@ -3,6 +3,19 @@
|
||||
<processor_spec>
|
||||
<programcounter register="PC"/>
|
||||
|
||||
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||
<pcode>
|
||||
<input name="base" size="2"/>
|
||||
<input name="inner" size="2"/>
|
||||
<output name="res" size="2"/>
|
||||
<body><![CDATA[
|
||||
res = (base << 12) + inner;
|
||||
]]></body>
|
||||
</pcode>
|
||||
<constresolve>
|
||||
<register name="rBBR"/>
|
||||
</constresolve>
|
||||
</segmentop>
|
||||
<context_data>
|
||||
<tracked_set space="ram">
|
||||
<set name="DECOMPILE_MODE" val="1"/>
|
||||
|
@ -3,6 +3,19 @@
|
||||
<processor_spec>
|
||||
<programcounter register="PC"/>
|
||||
|
||||
<segmentop space="ram" userop="segment" farpointer="yes">
|
||||
<pcode>
|
||||
<input name="base" size="2"/>
|
||||
<input name="inner" size="2"/>
|
||||
<output name="res" size="2"/>
|
||||
<body><![CDATA[
|
||||
res = (base << 12) + inner;
|
||||
]]></body>
|
||||
</pcode>
|
||||
<constresolve>
|
||||
<register name="rBBR"/>
|
||||
</constresolve>
|
||||
</segmentop>
|
||||
<context_data>
|
||||
<tracked_set space="ram">
|
||||
<set name="DECOMPILE_MODE" val="1"/>
|
||||
|
Loading…
Reference in New Issue
Block a user