1#ifndef ROSE_SAGE_INTERFACE_ASM
2#define ROSE_SAGE_INTERFACE_ASM
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
13 void addComment(
SgAsmStatement* stmt,
const std::string & input_string );
29 std::string
generateUniqueName (
size_t value, std::map<size_t,int> & usedOffsets,
size_t & counter );
38 typedef bool (*EquivalenceTestFunctionType) (
SgNode* x,
SgNode* y);
44 std::vector<SgNode*> flattenAST (
SgNode* node );
45 std::vector<SgNode*> matchAST (
SgNode* node, std::vector<SgNode*> & listOfNodes, EquivalenceTestFunctionType equivalenceTest );
49 std::vector<SgNode*> find (
SgNode* astNode,
SgNode* target, EquivalenceTestFunctionType equivalenceTest );
56 bool isNOP (
const std::vector<SgAsmInstruction*> & asmInstructionList );
Base class for ELF file sections.
Represents a synthesized function.
Base class for machine instructions.
Represents an interpretation of a binary container.
Base class for all binary analysis IR nodes.
Base class for statement-like subclasses.
This class represents the base class for all IR nodes within Sage III.
This class represents a source project, with a list of SgFile objects and global information about th...
X86InstructionKind
List of all x86 instructions known to the ROSE disassembler/assembler.
Functions that are useful when operating on the AST.
void insertInstruction(SgAsmInstruction *targetInstruction, SgAsmInstruction *newInstruction, bool insertBefore)
Support for insertion of instruction relative to a target instruction.
bool isNOP(SgAsmInstruction *asmInstruction)
Test an instruction for if it has no side-effect to the state (is so then it is a NOP)....
SgAsmBlock * getAsmBlock(SgAsmInstruction *asmInstruction)
Traverses AST backwards up the tree along the "parent" edges to the SgAsmBlock.
std::string generateUniqueName(const SgNode *node, bool ignoreDifferenceBetweenDefiningAndNondefiningDeclarations)
Generate unique name from C and C++ constructs. The name may contain space.
std::vector< std::vector< SgAsmInstruction * > > find_NOP_sequences(SgAsmBlock *asmBlock)
find sequences of NOP instructions in a SgAsmBlock
SgAsmInterpretation * getAsmInterpretation(SgAsmNode *asmNode)
Traverses AST backwards up the tree along the "parent" edges to the SgAsmInterpretation.
SgAsmFunction * getAsmFunction(SgAsmInstruction *asmInstruction)
Traverses AST backwards up the tree along the "parent" edges to the SgAsmFunction.
void removeInstruction(SgAsmStatement *instruction)
Remove a instruction.
void insertInstructionBefore(SgAsmInstruction *targetInstruction, SgAsmInstruction *newInstruction)
Insert a instruction before a target instruction.