Interface IEUntranslatedInstruction
- All Superinterfaces:
IEGeneric
,IEStatement
,IInstruction
,IInstructionOperand
,IResizableInstruction
Special IR statement that can be used to wrap non-standard, partially translated, or untranslated
native code instructions. The untranslated native instruction can be seen as a blackbox; the IR
EUntranslatedInstruction can be seen as a variant of ECall.
By default, IR-Evaluation fails and C-Generation yields basic boilerplate. Both can be customized in the converter.
Default memory access information
is set to NONE and can be
customized.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Tag name for an optional entry holding the custom name of this untranslated IR, possibly better suited than the native mnemonic name.Fields inherited from interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement
FLAG_LIKELY_EPILOGUE, FLAG_LIKELY_PROLOGUE, FLAG_OPT_BLOCK_PROPAGATION, FLAG_OPT_BLOCK_SUBSTITUTIONS
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addSideEffectDefinedVariable
(IEVar... vars) void
addSideEffectSpoiledVariable
(IEVar... vars) void
addSideEffectUsedVariable
(IEVar... vars) long
getParameterExpression
(int index) Retrieve the primary return expression (if the IR returns a tuple, the primary return expression if the first item in the tuple).Get the tuple returned by this IR.getTag()
Get the optional default tag.Retrieve a tag.getTags()
Retrieve a copy of all the tags.void
setBreakingFlow
(IFlowInformation flowinfo) void
void
setNativeAddress
(long nativeAddress) void
setNativeMnemonic
(String mnemonic) void
setParameterExpressions
(IEGeneric... params) void
setParameterExpressions
(Collection<IEGeneric> params) void
setReturnExpression
(IEGeneric expression) Set a single return expression.void
setReturnExpressions
(IEGeneric... expressions) void
setReturnExpressions
(List<IEGeneric> expressions) Set the tuple returned by this IR.void
setRoutineCall
(IFlowInformation flowinfo) void
Set an optional default tag.void
Store a tag.Methods inherited from interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEGeneric
accessesMemory, addFlags, asCompose, asCond, asGroup, asGroupElt, asImm, asMem, asOperation, asRange, asSlice, asStatement, asVar, bit, copyProperties, countSuccessiveBits, duplicate, equalsEx, evaluate, evaluateAddress, evaluateUnsignedLong, examine, find, findByType, findByType, findParent, findParent, getBitsize, getDefinedOrUsedAsDestination, getExplicitlyUsed, getExplicitlyUsed, getFlags, getPriority, getSafeType, getType, getUsed, getUsed, half, hasFlags, isCompose, isCond, isGroup, isGroupElt, isImm, isMem, isOperation, isOperation, isOperation, isOperation, isRange, isSlice, isSlice, isStatement, isVar, isVar, leftShift, leftShift, lsb, msb, part, removeFlags, replaceSubExpression, replaceVar, rightShift, rightShift, safelyType, setFlags, setType, setType, setType, signExtend, slice, slice, slice, topHalf, updateTypes, verify, visitDepthPost, visitDepthPost, visitDepthPost, visitDepthPre, visitDepthPre, visitDepthPre, zeroExtend
Methods inherited from interface com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir.IEStatement
addLowerLevelAddress, addLowerLevelAddresses, asAssign, asCall, asJump, asJumpFar, asNop, asReturn, asSwitch, asUntranslated, collectSubExpressions, collectSubExpressions, collectUsedExpressions, copyLowerLevelAddresses, copyProperties, equalsEx, equalsEx, generateC, getContext, getDefUse, getDefUseInfo, getLowerLevelAddresses, getPrimaryLowerLevelAddress, getSPDelta, isAssign, isAssignTo, isAssignTo, isAssignToVar, isCall, isConditionalJump, isConditionalJumpFar, isJump, isJumpFar, isNop, isReturn, isSwitch, isUnconditionalJump, isUnconditionalJumpFar, isUntranslatedInstruction, postUpdateTypes, preUpdateTypes, removeLowerLevelAddress, replaceDefinedVar, replaceUsedVar, replaceVar, resetLowerLevelAddress, resetLowerLevelAddresses, setLowerLevelAddress, setLowerLevelAddresses, setPrimaryLowerLevelAddress, setSPDelta, visitInstruction, visitInstruction, visitInstructionPostOrder, withLowerLevelAddress, withLowerLevelAddresses, writesMemory
Methods inherited from interface com.pnfsoftware.jeb.core.units.code.IInstruction
canThrow, collectIndirectCallReferences, format, getACS, getBreakingFlow, getCode, getCountOfOperands, getDefUse, getDefUse, getInstructionFlags, getMnemonic, getOperand, getOperands, getPrefix, getPrimaryBranchAddress, getProcessorMode, getRoutineCall, getSize
Methods inherited from interface com.pnfsoftware.jeb.core.units.code.IInstructionOperand
format
Methods inherited from interface com.pnfsoftware.jeb.core.units.code.IResizableInstruction
adjustSize, setSize
-
Field Details
-
TAG_CUSTOM_NAME
Tag name for an optional entry holding the custom name of this untranslated IR, possibly better suited than the native mnemonic name.Value: String.
- See Also:
-
-
Method Details
-
setNativeAddress
void setNativeAddress(long nativeAddress) -
getNativeAddress
long getNativeAddress() -
setNativeMnemonic
-
getNativeMnemonic
String getNativeMnemonic() -
setTag
Set an optional default tag. Same assetTag(null, object)
. The tag must beserializable
.- Parameters:
tag
- a simple immutable Java object annotated@Ser
-
getTag
Object getTag()Get the optional default tag.- Returns:
-
setTag
Store a tag. Same asgetTag(null)
- Parameters:
key
- mandatory keytag
- null to remove; else, must be a simple immutable Java object
-
getTags
Retrieve a copy of all the tags. The tag with the null key is the default tag.- Returns:
-
getTag
Retrieve a tag.- Parameters:
key
-- Returns:
-
setParameterExpressions
- Parameters:
params
-
-
setParameterExpressions
-
getParameterExpressions
- Returns:
- the actual list (can be modified; do not insert nulls)
-
getParameterExpression
- Parameters:
index
-- Returns:
-
setReturnExpression
Set a single return expression.- Parameters:
expression
- an expression, or null to specify that this IRE does not return anything
-
getReturnExpression
IEGeneric getReturnExpression()Retrieve the primary return expression (if the IR returns a tuple, the primary return expression if the first item in the tuple).- Returns:
-
setReturnExpressions
Set the tuple returned by this IR.- Parameters:
expressions
- a list consisting of non-null expressions
-
setReturnExpressions
-
getReturnExpressions
Get the tuple returned by this IR.- Returns:
- the actual list (can be modified; do not insert nulls)
-
setMemoryAccessInfo
-
getMemoryAccessInfo
MemoryAccessInfo getMemoryAccessInfo() -
addSideEffectDefinedVariable
-
getSideEffectDefinedVariables
-
addSideEffectUsedVariable
-
getSideEffectUsedVariables
-
addSideEffectSpoiledVariable
-
getSideEffectSpoiledVariables
-
setBreakingFlow
-
setRoutineCall
-