Uses of Interface
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.ICStatement
Packages that use ICStatement
Package
Description
This package and its sub-packages contain the types used to access
gendec, JEB's generic
decompiler.C AST types, used in AST documents provided by the
source units
generated by gendec.Types specific to
gendec's AST optimizers.C simulator types, used to emulate AST statements.
Types used to create and access
gendec's IR (Intermediate Representation).-
Uses of ICStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler that return ICStatementModifier and TypeMethodDescriptionAbstractConverter.generateASTForUntranslatedIR(IEUntranslatedInstruction insn, IERoutineContext ectx, ICMethod cctx) The default implementation returns null.IEConverter.generateASTForUntranslatedIR(IEUntranslatedInstruction insn, IERoutineContext ectx, ICMethod cctx) Generate C statement from an untranslated IR instruction. -
Uses of ICStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast
Subinterfaces of ICStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.astModifier and TypeInterfaceDescriptioninterfaceC AST interface to represent assignments.interfaceC AST interface to represent a sequence ofstatements.interfaceC AST interface to represent abreakstatement.interfaceC AST interface to represent a routine call.interfaceC AST interface to represent compound statements.interfaceBase class for CAST conditional statements (if, switch).interfaceC AST interface to represent acontinuestatement.interfaceC AST interface for flow breaker (break, continue, goto).interfaceA custom C statement.interfaceC AST interface representing the declaration of atypedidentifier.interfaceC AST interface to represent ado-whileloop statement.interfaceC AST interface used to represent a standard for loop statement.interfaceSuper interface for C AST breakable compounds (loops, switches).interfaceSuper interface for C AST loops (for, do-while, while).interfaceC AST interface for while-like loops (while, do-while).interfaceC AST interface to represent a "goto" statement.interfaceC AST interface to represent a conditional "if" statement.interfaceC AST element representing a "long jump".interfaceC AST label interfaces are immutable AST elements created by anICLabelFactory.interfaceC AST interface to represent return statements of methods.interfaceC AST interface to representswitchstatements.interfaceHigh-level C AST interface extended by Return and Throw statements.interfaceC AST interface to represent throw statements.interfaceC AST interface to representwhileloop statements.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast that return ICStatementModifier and TypeMethodDescriptionICStatement.duplicate()ICBlock.get(int index) static ICStatementCUtil.getFirstRealStatement(ICBlock b, int i) Get the next "real" statement to be executed in the block, starting at the given index inclusively.static ICStatementCUtil.getFirstRealStatementEx(ICMethod m, ICStatement first) This method does two things: locating the statement provided, and skipping over it (note: if it is a compound statement, the entire compound is skipped) the next real statement that immediately follows is returned (seeCUtil.getFirstRealStatement(ICBlock, int)).ICBlock.getLast()ICMethod.getLastStatement()static ICStatementCUtil.getParentBlock(ICMethod m, ICStatement b) Retrieve parent block or null if no parent was found (or processed statement is the top body of theICMethod)ICForStm.getPostStatement()ICForStm.getPreStatement()ICBlock.remove(int index) ICBlock.removeLast()Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast that return types with arguments of type ICStatementModifier and TypeMethodDescriptionICCompound.generateFlatList()Generate a flat list of AST and pseudo-AST elements that make up this block.ICBlock.getAll()static List<ICStatement> CUtil.getPreviouslyExecutedStatements(ICMethod m, ICStatement first) Attempt to retrieve the previously executed statements from a given statement.ICMethod.getStatements()Walk the tree and get the ordered list of all (non-pseudo) statements that make up the method.ICMethod.toFlatList()Flatten the abstract syntax tree.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast with parameters of type ICStatementModifier and TypeMethodDescriptionICBlock.add(ICStatement stm) ICBlock.addAll(ICStatement... stms) voidICMethod.addStatement(ICStatement stm) static booleanCUtil.canFallthrough(ICStatement currentStmt, ICStatement fallthroughStmt, boolean ignoreBreak) Check if the current statement can fallthrough to the next statement, i.e.static booleanCUtil.containsBreak(ICStatement stm) static booleanCUtil.containsLabel(ICStatement stm) static booleanCUtil.containsStatement(ICStatement stm, Class<? extends ICStatement> class_) ICElementFactory.createBlock(ICStatement stm) ICElementFactory.createBlock(ICStatement... stms) ICElementFactory.createForLoop(ICStatement pre, ICPredicate p, ICStatement post, ICBlock b) ICElementFactory.createIfStm(ICPredicate p, ICStatement stm) ICElementFactory.createIfStm(ICPredicate p, ICStatement stm, ICStatement defaultStm) booleanICMethod.deleteStatement(ICStatement stm) Delete a statement by reference.static booleanCUtil.flipIfElse(ICStatement stm, ICOperatorFactory of) Check if a statement is a if-statement with two blocks, including a default block, and reverse the condition.static CUtil.BreakFlowResultCUtil.getBreakingFlowResult(ICStatement e) Indicate if next instruction will be executed.static ICStatementCUtil.getFirstRealStatementEx(ICMethod m, ICStatement first) This method does two things: locating the statement provided, and skipping over it (note: if it is a compound statement, the entire compound is skipped) the next real statement that immediately follows is returned (seeCUtil.getFirstRealStatement(ICBlock, int)).static ICLabelCUtil.getGotoLabel(ICStatement stm) Check if the statement is aICGototo return the label; else, return null.static ICLabelCUtil.getIfGotoTarget(ICStatement stm) Check if the statement follows the patternif(P){goto x;}and if so, returnsx.static ICStatementCUtil.getParentBlock(ICMethod m, ICStatement b) Retrieve parent block or null if no parent was found (or processed statement is the top body of theICMethod)static List<ICStatement> CUtil.getPreviouslyExecutedStatements(ICMethod m, ICStatement first) Attempt to retrieve the previously executed statements from a given statement.voidICBlock.insert(int index, ICStatement stm) booleanICCompound.insertAt(long target_offset, ICStatement insert_stm) Insert a statement at a particular offset within the AST.booleanICMethod.insertAtOffset(long offset, ICStatement stm) static CUtil.BreakFlowStatusCUtil.isBreakingFlow(ICStatement e) static booleanCUtil.isBreakTo(ICStatement stm, ICLabel target) Check if the statement is aICBreakto the given label.static booleanCUtil.isContainingLabel(ICStatement stm, ICLabel targetLabel) Check if a statement contains a given label; compound statements are recursively processed to search for the label.static booleanCUtil.isDoWhileTrue(ICStatement stm) Check if a statement is a do-while loop, whose predicate is literal True.static booleanCUtil.isGotoTo(ICStatement stm, ICLabel target) Check if the statement is aICGototo the given label.static booleanCUtil.isIfBranch(ICStatement stm) Check if the statement follows the patternif(P){BRANCH;}, whereBRANCHis a sole branch instruction.static booleanCUtil.isIfElse(ICStatement stm) Check if a statement is a if-statement with two blocks, including a default block.static booleanCUtil.isIfNoElse(ICStatement stm) Check if a statement follows the patternif(P){ }[else if(...){}]*, i.e.static booleanCUtil.isPlainBreak(ICStatement stm) Check if the statement is aICBreakwithout label.static booleanCUtil.isWhileTrue(ICStatement stm) Check if a statement is a while loop, whose predicate is literal True.booleanICBlock.remove(ICStatement stm) Remove a statement from the block.voidICBlock.set(int index, ICStatement stm) voidICForStm.setPostStatement(ICStatement post) voidICForStm.setPreStatement(ICStatement pre) static booleanCUtil.visitICStatementDepthPost(ICVisitor visitor, ICStatement elt, CVisitResults results) Method parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast with type arguments of type ICStatementModifier and TypeMethodDescriptionstatic booleanCUtil.containsStatement(ICStatement stm, Class<? extends ICStatement> class_) voidICMethod.fromFlatList(List<ICStatement> list) Regenerate the AST of this method based on a flat list of statements and pseudo-statements. -
Uses of ICStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.opt
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.opt that return ICStatementModifier and TypeMethodDescriptionprotected ICStatementAbstractCBlockOptimizer.getNextSiblingStatement(int statementIndex, ICBlock block, ICStatement blockNextSiblingStm) Retrieve the statement following a child block in its parent block.protected abstract ICStatementAbstractCStatementOptimizer.optimizeStatement(ICStatement stm) Optimize a statement.Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.opt with parameters of type ICStatementModifier and TypeMethodDescriptionprotected ICStatementAbstractCBlockOptimizer.getNextSiblingStatement(int statementIndex, ICBlock block, ICStatement blockNextSiblingStm) Retrieve the statement following a child block in its parent block.protected intAbstractCBlockOptimizer.optimizeBlock(ICBlock b, ICCompound parent, ICStatement blockNextStm) Attempt to optimize CBlock, with some contextual information provided.protected abstract ICStatementAbstractCStatementOptimizer.optimizeStatement(ICStatement stm) Optimize a statement. -
Uses of ICStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.simulator
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.simulator that return types with arguments of type ICStatementModifier and TypeMethodDescriptionCMethodState.getStatements()CMethodSimulator.getStmtsFlatList()CSimulationLogger.getStmtsFlatList()Constructor parameters in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ast.simulator with type arguments of type ICStatement -
Uses of ICStatement in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir
Methods in com.pnfsoftware.jeb.core.units.code.asm.decompiler.ir that return ICStatement