Class ParserWalker
- java.lang.Object
 - 
- ghidra.app.plugin.processors.sleigh.ParserWalker
 
 
- 
public class ParserWalker extends java.lang.ObjectClass for walking the Sleigh Parser tree. The nodes of the tree are the Sleigh Constructors arranged for a particular instruction. This tree is walked for various purposes:- SleighInstructionPrototype.resolve - initial parsing of instruction and building the tree
 - SleighInstructionPrototype.resolveHandles - filling in Varnode values for all the Constructor exports
 - PcodeEmit - for weaving together p-code for an instruction
 
 
- 
- 
Constructor Summary
Constructors Constructor Description ParserWalker(SleighParserContext c)ParserWalker(SleighParserContext c, SleighParserContext cross)For use with pcode cross-build 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidallocateOperand()voidbaseState()Initialize a walk of the treevoidcalcCurrentLength(int minLength, int numopers)Calculate the length of the current constructor state assuming all its operands are constructedAddressgetAddr()ConstructorgetConstructor()AddressSpacegetConstSpace()intgetContextBits(int startbit, int size)intgetContextBytes(int byteoff, int numbytes)intgetCurrentLength()java.lang.StringgetCurrentSubtableName()AddressSpacegetCurSpace()FixedHandlegetFixedHandle(int i)AddressgetFlowDestAddr()AddressgetFlowRefAddr()intgetInstructionBits(int startbit, int size)intgetInstructionBytes(int byteoff, int numbytes)AddressgetNaddr()intgetOffset(int i)Get the offset into the instruction for the current node (i=-1) or one of the current node's childrenintgetOperand()Find the next child that needs to be traversedFixedHandlegetParentHandle()SleighParserContextgetParserContext()ConstructStategetState()booleanisState()Are we at the end of the tree walkvoidpopOperand()Move to the parent of the current nodevoidpushOperand(int i)Move down to a particular child of the current node.voidsetConstructor(Constructor ct)voidsetCurrentLength(int len)voidsetOffset(int off)voidsetOutOfBandState(Constructor ct, int index, ConstructState tempstate, ParserWalker otherwalker)voidsnippetState()Create state suitable for parsing a just a p-code semantics snippetvoidsubTreeState(ConstructState subtree) 
 - 
 
- 
- 
Constructor Detail
- 
ParserWalker
public ParserWalker(SleighParserContext c)
 
- 
ParserWalker
public ParserWalker(SleighParserContext c, SleighParserContext cross)
For use with pcode cross-build- Parameters:
 c- contextcross- cross context
 
 - 
 
- 
Method Detail
- 
getParserContext
public SleighParserContext getParserContext()
 
- 
baseState
public void baseState()
Initialize a walk of the tree 
- 
subTreeState
public void subTreeState(ConstructState subtree)
 
- 
snippetState
public void snippetState()
Create state suitable for parsing a just a p-code semantics snippet 
- 
isState
public boolean isState()
Are we at the end of the tree walk- Returns:
 - true if there is more walk to go
 
 
- 
getState
public ConstructState getState()
 
- 
pushOperand
public void pushOperand(int i)
Move down to a particular child of the current node. Store what would be the next sibling to walk- Parameters:
 i- is the index of the desired child
 
- 
allocateOperand
public void allocateOperand() throws UnknownInstructionException- Throws:
 UnknownInstructionException
 
- 
popOperand
public void popOperand()
Move to the parent of the current node 
- 
getOperand
public int getOperand()
Find the next child that needs to be traversed- Returns:
 - the index of the child
 
 
- 
getFixedHandle
public FixedHandle getFixedHandle(int i)
 
- 
getParentHandle
public FixedHandle getParentHandle()
 
- 
getOffset
public int getOffset(int i)
Get the offset into the instruction for the current node (i=-1) or one of the current node's children- Parameters:
 i- selects the desired child of the current node- Returns:
 - the offset (in bytes) for the selected node
 
 
- 
setOffset
public void setOffset(int off)
 
- 
getCurrentLength
public int getCurrentLength()
 
- 
setCurrentLength
public void setCurrentLength(int len)
 
- 
calcCurrentLength
public void calcCurrentLength(int minLength, int numopers)Calculate the length of the current constructor state assuming all its operands are constructed 
- 
getConstructor
public Constructor getConstructor()
- Returns:
 - the Constructor for the current node in the walk
 
 
- 
setConstructor
public void setConstructor(Constructor ct)
 
- 
getAddr
public Address getAddr()
 
- 
getNaddr
public Address getNaddr()
 
- 
getCurSpace
public AddressSpace getCurSpace()
 
- 
getConstSpace
public AddressSpace getConstSpace()
 
- 
getFlowRefAddr
public Address getFlowRefAddr()
 
- 
getFlowDestAddr
public Address getFlowDestAddr()
 
- 
getInstructionBytes
public int getInstructionBytes(int byteoff, int numbytes) throws MemoryAccessException- Throws:
 MemoryAccessException
 
- 
getContextBytes
public int getContextBytes(int byteoff, int numbytes) 
- 
getInstructionBits
public int getInstructionBits(int startbit, int size) throws MemoryAccessException- Throws:
 MemoryAccessException
 
- 
getContextBits
public int getContextBits(int startbit, int size) 
- 
setOutOfBandState
public void setOutOfBandState(Constructor ct, int index, ConstructState tempstate, ParserWalker otherwalker)
 
- 
getCurrentSubtableName
public java.lang.String getCurrentSubtableName()
 
 - 
 
 -