libTriton version 1.0 build 1592
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
ast.hpp File Reference
#include <deque>
#include <memory>
#include <ostream>
#include <stdexcept>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <triton/astEnums.hpp>
#include <triton/coreUtils.hpp>
#include <triton/cpuSize.hpp>
#include <triton/dllexport.hpp>
#include <triton/exceptions.hpp>
#include <triton/tritonTypes.hpp>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  triton::ast::AbstractNode
 Abstract node. More...
 
class  triton::ast::ArrayNode
 (Array (_ BitVec indexSize) (_ BitVec 8)) node More...
 
class  triton::ast::AssertNode
 (assert <expr>) node More...
 
class  triton::ast::BswapNode
 (bswap <expr>) node More...
 
class  triton::ast::BvaddNode
 (bvadd <expr1> <expr2>) node More...
 
class  triton::ast::BvandNode
 (bvand <expr1> <expr2>) node More...
 
class  triton::ast::BvashrNode
 (bvashr <expr1> <expr2>) node More...
 
class  triton::ast::BvlshrNode
 (bvlshr <expr1> <expr2>) node More...
 
class  triton::ast::BvmulNode
 (bvmul <expr1> <expr2>) node More...
 
class  triton::ast::BvnandNode
 (bvnand <expr1> <expr2>) node More...
 
class  triton::ast::BvnegNode
 (bvneg <expr>) node More...
 
class  triton::ast::BvnorNode
 (bvnor <expr1> <expr2>) node More...
 
class  triton::ast::BvnotNode
 (bvnot <expr>) node More...
 
class  triton::ast::BvorNode
 (bvor <expr1> <expr2>) node More...
 
class  triton::ast::BvrolNode
 ((_ rotate_left rot) <expr>) node More...
 
class  triton::ast::BvrorNode
 ((_ rotate_right rot) <expr>) node More...
 
class  triton::ast::BvsdivNode
 (bvsdiv <expr1> <expr2>) node More...
 
class  triton::ast::BvsgeNode
 (bvsge <expr1> <expr2>) node More...
 
class  triton::ast::BvsgtNode
 (bvsgt <expr1> <expr2>) node More...
 
class  triton::ast::BvshlNode
 (bvshl <expr1> <expr2>) node More...
 
class  triton::ast::BvsleNode
 (bvsle <expr1> <expr2>) node More...
 
class  triton::ast::BvsltNode
 (bvslt <expr1> <expr2>) node More...
 
class  triton::ast::BvsmodNode
 (bvsmod <expr1> <expr2>) node More...
 
class  triton::ast::BvsremNode
 (bvsrem <expr1> <expr2>) node More...
 
class  triton::ast::BvsubNode
 (bvsub <expr1> <expr2>) node More...
 
class  triton::ast::BvudivNode
 (bvudiv <expr1> <expr2>) node More...
 
class  triton::ast::BvugeNode
 (bvuge <expr1> <expr2>) node More...
 
class  triton::ast::BvugtNode
 (bvugt <expr1> <expr2>) node More...
 
class  triton::ast::BvuleNode
 (bvule <expr1> <expr2>) node More...
 
class  triton::ast::BvultNode
 (bvult <expr1> <expr2>) node More...
 
class  triton::ast::BvuremNode
 (bvurem <expr1> <expr2>) node More...
 
class  triton::ast::BvxnorNode
 (bvxnor <expr1> <expr2>) node More...
 
class  triton::ast::BvxorNode
 (bvxor <expr1> <expr2>) node More...
 
class  triton::ast::BvNode
 (_ bv<value> <size>) node More...
 
class  triton::ast::CompoundNode
 [<expr1> <expr2> <expr3> ...] node More...
 
class  triton::ast::ConcatNode
 (concat <expr1> <expr2> ...) node More...
 
class  triton::ast::DeclareNode
 (declare-fun <var_name> () (_ BitVec <var_size>)) node More...
 
class  triton::ast::DistinctNode
 (distinct <expr1> <expr2> ...) node More...
 
class  triton::ast::EqualNode
 (= <expr1> <expr2> ...) node More...
 
class  triton::ast::ExtractNode
 ((_ extract <high> <low>) <expr>) node More...
 
class  triton::ast::ForallNode
 (forall ((x (_ BitVec <size>)), ...) body) More...
 
class  triton::ast::IffNode
 (iff <expr1> <expr2>) More...
 
class  triton::ast::IntegerNode
 Integer node. More...
 
class  triton::ast::IteNode
 (ite <ifExpr> <thenExpr> <elseExpr>) More...
 
class  triton::ast::LandNode
 (and <expr1> <expr2>) More...
 
class  triton::ast::LetNode
 (let ((<alias> <expr2>)) <expr3>) More...
 
class  triton::ast::LnotNode
 (lnot <expr>) More...
 
class  triton::ast::LorNode
 (or <expr1> <expr2>) More...
 
class  triton::ast::LxorNode
 (xor <expr1> <expr2>) More...
 
class  triton::ast::ReferenceNode
 Reference node. More...
 
class  triton::ast::SelectNode
 (select array index) More...
 
class  triton::ast::StoreNode
 (store array index expr) More...
 
class  triton::ast::StringNode
 String node. More...
 
class  triton::ast::SxNode
 ((_ sign_extend sizeExt) <expr>) node More...
 
class  triton::ast::VariableNode
 Variable node. More...
 
class  triton::ast::ZxNode
 ((_ zero_extend sizeExt) <expr>) node More...
 

Namespaces

namespace  triton
 The Triton namespace.
 
namespace  triton::engines
 The Engines namespace.
 
namespace  triton::engines::symbolic
 The Symbolic Execution namespace.
 
namespace  triton::ast
 The AST namespace.
 

Typedefs

using triton::engines::symbolic::SharedSymbolicExpression = std::shared_ptr<triton::engines::symbolic::SymbolicExpression>
 Shared Symbolic Expression.
 
using triton::engines::symbolic::SharedSymbolicVariable = std::shared_ptr<triton::engines::symbolic::SymbolicVariable>
 Shared Symbolic variable.
 
using triton::ast::SharedAbstractNode = std::shared_ptr<triton::ast::AbstractNode>
 Shared Abstract Node.
 
using triton::ast::WeakAbstractNode = std::weak_ptr<triton::ast::AbstractNode>
 Weak Abstract Node.
 
using triton::ast::SharedAstContext = std::shared_ptr<triton::ast::AstContext>
 Shared AST context.
 

Functions

triton::uint512 triton::ast::hash2n (triton::uint512 hash, triton::uint32 n)
 Custom hash2n function for hash routine.
 
triton::uint512 triton::ast::rotl (const triton::uint512 &value, triton::uint32 shift)
 Custom rotate left function for hash routine.
 
triton::sint512 triton::ast::modularSignExtend (AbstractNode *node)
 Custom modular sign extend for bitwise operation.
 
std::ostream & triton::ast::operator<< (std::ostream &stream, AbstractNode *node)
 Displays the node in ast representation.
 
SharedAbstractNode triton::ast::newInstance (AbstractNode *node, bool unroll=false)
 AST C++ API - Duplicates the AST.
 
SharedAbstractNode triton::ast::unroll (const SharedAbstractNode &node)
 AST C++ API - Unrolls the SSA form of a given AST.
 
std::vector< SharedAbstractNodetriton::ast::childrenExtraction (const SharedAbstractNode &node, bool unroll, bool revert)
 Returns node and all its children of an AST sorted topologically. If unroll is true, references are unrolled. If revert is true, children are on top of list.
 
std::vector< SharedAbstractNodetriton::ast::parentsExtraction (const SharedAbstractNode &node, bool revert)
 Returns node and all its parents of an AST sorted topologically. If revert is true, oldest parents are on top of list.
 
std::deque< SharedAbstractNodetriton::ast::search (const SharedAbstractNode &node, triton::ast::ast_e match=ANY_NODE)
 Returns a deque of collected matched nodes via a depth-first pre order traversal.
 
SharedAbstractNode triton::ast::dereference (const SharedAbstractNode &node)
 Returns the first non referene node encountered.
 
triton::uint32 triton::ast::getIndexSize (const SharedAbstractNode &node)
 Gets the index size of an array.
 
template<typename T >
triton::ast::getInteger (const SharedAbstractNode &node)
 Gets the value of an integer node.
 
template<>
std::string triton::ast::getInteger (const SharedAbstractNode &node)
 std::string specialization