1#ifndef ROSE_SageBuilderAsm_H
2#define ROSE_SageBuilderAsm_H
3#include <featureTests.h>
4#ifdef ROSE_ENABLE_BINARY_ANALYSIS
6#include <AssemblerX86Init.h>
8#include <SgAsmRiscOperation.h>
9#include <SgAsmOperandList.h>
11#include <Sawyer/BitVector.h>
16namespace SageBuilderAsm {
144template <
typename Insn>
158SgAsmBlock* buildBasicBlock(
const std::vector<SgAsmInstruction*>&);
159SgAsmFunction* buildFunction(rose_addr_t entryVa,
const std::vector<SgAsmBlock*>&);
163SgAsmStaticData* buildStaticData(rose_addr_t startVa,
const SgUnsignedCharList &rawData);
Expression that adds two operands.
Expression that performs an arithmetic, sign-bit preserving right shift.
Expression that concatenates two values to form a wider value.
Expression that performs a logical left shift operation.
Expression that performs a logical, sign-bit non-preserving right shift.
Expression that performs a logical left shift operation filling low-order bits with one.
Expression that multiplies two operands.
Expression that represents an update to a storage location.
Expression that represents an update to a storage location.
Expression that performs a right rotate.
Expression that subtracts the second operand from the first.
List of expression nodes.
Base class for expressions.
Represents a synthesized function.
Base class for integer values.
Reference to memory locations.
List of operands for an instruction.
SgAsmExpressionPtrList const & get_operands() const
Property: Ordered list of instruction operands.
Static representation of instruction semantics.
RiscOperator
One enum per RISC operator.
Represents static data in an executable.
Base class for binary types.
Expression representing sign extending.
Expression representing truncation.
Expression representing unsigned extending.
Base class for vector types.
Represents one Intel x86 machine instruction.
void set_parent(SgNode *parent)
All nodes in the AST contain a reference to a parent node.
SgAsmFloatType * buildIeee754Binary16()
16-bit IEEE-754 floating-point.
SgAsmIntegerType * buildTypeX86DoubleWord()
32-bit unsigned.
SgAsmIntegerType * buildTypeX86Byte()
8-bit unsigned.
SgAsmFloatType * buildIeee754Binary32()
32-bit IEEE-754 floating-point.
SgAsmIntegerType * buildTypeU64()
64-bit unsigned.
SgAsmFloatType * buildTypeX86Float64()
64-bit IEEE-754 floating-point.
SgAsmVectorType * buildTypeVector(size_t, SgAsmType *)
Fixed-size, packed array.
SgAsmFloatType * buildIeee754Binary64()
64-bit IEEE-754 floating-point.
SgAsmIntegerType * buildTypeI16()
16-bit signed.
SgAsmIntegerType * buildTypeI(size_t nBits)
Signed type of specified size.
SgAsmVectorType * buildTypeX86DoubleQuadWord()
Vector of two 64-bit unsigned integers.
SgAsmFloatType * buildIeee754Binary80()
80-bit IEEE-754 floating-point (as in x86).
SgAsmIntegerType * buildTypeX86QuadWord()
64-bit unsigned.
SgAsmIntegerType * buildTypeU(size_t nBits)
Unsigned type of specified size.
SgAsmFloatType * buildIeee754Binary128()
128-bit IEEE-754 floating-point.
SgAsmIntegerType * buildTypeU32()
32-bit unsigned.
SgAsmIntegerType * buildTypeI8()
8-bit signed.
SgAsmIntegerType * buildTypeU8()
8-bit unsigned.
SgAsmIntegerType * buildTypeU4()
4-bit unsigned.
SgAsmIntegerType * buildTypeI64()
64-bit signed.
SgAsmIntegerType * buildTypeU16()
16-bit unsigned.
SgAsmFloatType * buildTypeM68kFloat80()
Motorola M68k 96-bit float w/out 16-bit constant zero field.
SgAsmFloatType * buildTypeM68kFloat96()
Motorola M68k 96-bit float (16-bits are always zero).
SgAsmIntegerType * buildTypeX86Word()
16-bit unsigned.
SgAsmFloatType * buildTypeX86Float80()
80-bit IEEE-754 floating-point.
SgAsmIntegerType * buildTypeU1()
1-bit unsigned (Boolean).
SgAsmFloatType * buildTypeX86Float32()
32-bit IEEE-754 floating-point.
SgAsmIntegerType * buildTypeI32()
32-bit signed.
SgBinaryComposite * buildBinaryComposite(const std::string &fileName)
Build a new binary composite object.