#include <findConstants.h>
Inheritance diagram for FindConstantsPolicy:


Public Member Functions | |
| FindConstantsPolicy () | |
| FindConstantsPolicy (RegisterSet *initial_rs) | |
| const RegisterDictionary * | get_register_dictionary () const |
| Returns the register dictionary. | |
| void | set_register_dictionary (const RegisterDictionary *regdict) |
| Sets the register dictionary. | |
| template<size_t Len> | |
| XVariablePtr< Len > | number (uint64_t n) |
| static size_t size_t static Len size_t Len2 | BINARY_COMPUTATION (concat, Len1, Len2, Len1+Len2,{return a|(b<< Len1);}) XVariablePtr< 1 > false_() |
| XVariablePtr< 1 > | true_ () |
| XVariablePtr< 1 > | undefined_ () |
| template<size_t Len> | |
| UNARY_COMPUTATION_SPECIAL (invert, Len, Len,{if(le1.name==0) result->set(LatticeElement< Len >::constant(~le1.offset, result->def));else result->set(LatticeElement< Len >(le1.name, le1.definingInstruction,!le1.negate,~le1.offset));}) template< size_t Len > UNARY_COMPUTATION_SPECIAL(negate | |
| size_t To | UNARY_COMPUTATION (signExtend, From, To,{return(From==To?(a):IntegerOps::signExtend< From, To >(a));}) template< size_t Len > XVariablePtr< Len > ite(XVariablePtr< 1 > sel |
| size_t SCLen | UNARY_COMPUTATION (generateMask, SCLen, Len,{return IntegerOps::genMask< uint64_t >(a);}) template< size_t Len > BINARY_COMPUTATION_SPECIAL(add |
| size_t SALen | BINARY_COMPUTATION (rotateLeft, Len, SALen, Len,{return IntegerOps::rotateLeft< Len >(a, b);}) template< size_t Len |
| size_t SALen size_t SALen | BINARY_COMPUTATION (rotateRight, Len, SALen, Len,{return IntegerOps::rotateRight< Len >(a, b);}) template< size_t Len |
| size_t SALen size_t SALen size_t SALen | BINARY_COMPUTATION (shiftLeft, Len, SALen, Len,{return IntegerOps::shiftLeft< Len >(a, b);}) template< size_t Len |
| size_t SALen size_t SALen size_t SALen size_t SALen | BINARY_COMPUTATION (shiftRight, Len, SALen, Len,{return IntegerOps::shiftRightLogical< Len >(a, b);}) template< size_t Len |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen | BINARY_COMPUTATION (shiftRightArithmetic, Len, SALen, Len,{return IntegerOps::shiftRightArithmetic< Len >(a, b);}) template< size_t Len1 |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 | BINARY_COMPUTATION (signedMultiply, Len1, Len2, Len1+Len2,{return(IntegerOps::signExtend< Len1, 64 >(a)*IntegerOps::signExtend< Len2, 64 >(b));}) template< size_t Len1 |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 | BINARY_COMPUTATION (unsignedMultiply, Len1, Len2, Len1+Len2,{return(a *b);}) template< size_t Len1 |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 | BINARY_COMPUTATION (signedDivide, Len1, Len2, Len1,{return(IntegerOps::signExtend< Len1, 64 >(a)/IntegerOps::signExtend< Len2, 64 >(b));}) template< size_t Len1 |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 | BINARY_COMPUTATION (signedModulo, Len1, Len2, Len2,{return(IntegerOps::signExtend< Len1, 64 >(a)%IntegerOps::signExtend< Len2, 64 >(b));}) template< size_t Len1 |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 | BINARY_COMPUTATION (unsignedDivide, Len1, Len2, Len1,{if(0==b) throw std::string("division by zero");return(a/b);}) template< size_t Len1 |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 | BINARY_COMPUTATION (unsignedModulo, Len1, Len2, Len2,{return(a%b);}) template< size_t Len > UNARY_COMPUTATION(leastSignificantSetBit |
Static Public Member Functions | |
| template<size_t Len, size_t Len2> | |
| static | UNARY_COMPUTATION_SPECIAL (unsignedExtend, Len, Len2,{result->set(LatticeElement< Len2 >(le1.name, le1.definingInstruction, le1.negate, le1.offset));}) template< size_t From |
| static size_t size_t static Len | UNARY_COMPUTATION_SPECIAL (extract, Len, To-From,{if(From==0){result->set(LatticeElement< To-From >(le1.name, le1.definingInstruction, le1.negate, le1.offset));return;}if(le1.name!=0){result->set(LatticeElement< To-From >::nonconstant(result->myName, result->def));return;}result->set(LatticeElement< To-From >::constant((le1.offset >> From)&(IntegerOps::SHL1< uint64_t, To-From >::value-1), result->def));}) template< size_t Len1 |
Public Attributes | |
| std::map< uint64_t, RegisterSet > | rsets |
| RegisterSet | cur_state |
| RegisterSet * | orig_state |
| uint32_t | addr |
| XVariablePtr< 32 > | newIp |
| const RegisterDictionary * | regdict |
| static size_t | To |
| Len | |
| size_t To XVariablePtr< Len > | ifTrue |
| size_t SCLen | Len |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 | Len |
Classes | |
| struct | Exception |
| struct | NumberConstraint |
| FindConstantsPolicy::FindConstantsPolicy | ( | ) | [inline] |
| FindConstantsPolicy::FindConstantsPolicy | ( | RegisterSet * | initial_rs | ) | [inline] |
| const RegisterDictionary* FindConstantsPolicy::get_register_dictionary | ( | ) | const [inline] |
Returns the register dictionary.
| void FindConstantsPolicy::set_register_dictionary | ( | const RegisterDictionary * | regdict | ) | [inline] |
Sets the register dictionary.
| XVariablePtr<Len> FindConstantsPolicy::number | ( | uint64_t | n | ) | [inline] |
| static FindConstantsPolicy::UNARY_COMPUTATION_SPECIAL | ( | unsignedExtend | , | |
| Len | , | |||
| Len2 | ||||
| ) | [static] |
| static size_t size_t static Len FindConstantsPolicy::UNARY_COMPUTATION_SPECIAL | ( | extract | , | |
| Len | , | |||
| To- | From | |||
| ) | [static] |
| static size_t size_t static Len size_t Len2 FindConstantsPolicy::BINARY_COMPUTATION | ( | concat | , | |
| Len1 | , | |||
| Len2 | , | |||
| Len1+ | Len2 | |||
| ) | [inline] |
| XVariablePtr<1> FindConstantsPolicy::true_ | ( | ) | [inline] |
| XVariablePtr<1> FindConstantsPolicy::undefined_ | ( | ) | [inline] |
| size_t SCLen FindConstantsPolicy::UNARY_COMPUTATION | ( | generateMask | , | |
| SCLen | , | |||
| Len | ||||
| ) |
| size_t SALen size_t SALen FindConstantsPolicy::BINARY_COMPUTATION | ( | rotateRight | , | |
| Len | , | |||
| SALen | , | |||
| Len | ||||
| ) |
| size_t SALen size_t SALen size_t SALen FindConstantsPolicy::BINARY_COMPUTATION | ( | shiftLeft | , | |
| Len | , | |||
| SALen | , | |||
| Len | ||||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen FindConstantsPolicy::BINARY_COMPUTATION | ( | shiftRight | , | |
| Len | , | |||
| SALen | , | |||
| Len | ||||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen FindConstantsPolicy::BINARY_COMPUTATION | ( | shiftRightArithmetic | , | |
| Len | , | |||
| SALen | , | |||
| Len | ||||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 FindConstantsPolicy::BINARY_COMPUTATION | ( | signedMultiply | , | |
| Len1 | , | |||
| Len2 | , | |||
| Len1+ | Len2 | |||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 FindConstantsPolicy::BINARY_COMPUTATION | ( | unsignedMultiply | , | |
| Len1 | , | |||
| Len2 | , | |||
| Len1+ | Len2 | |||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 FindConstantsPolicy::BINARY_COMPUTATION | ( | signedDivide | , | |
| Len1 | , | |||
| Len2 | , | |||
| Len1 | ||||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 FindConstantsPolicy::BINARY_COMPUTATION | ( | signedModulo | , | |
| Len1 | , | |||
| Len2 | , | |||
| Len2 | ||||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 FindConstantsPolicy::BINARY_COMPUTATION | ( | unsignedDivide | , | |
| Len1 | , | |||
| Len2 | , | |||
| Len1 | ||||
| ) |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 FindConstantsPolicy::BINARY_COMPUTATION | ( | unsignedModulo | , | |
| Len1 | , | |||
| Len2 | , | |||
| Len2 | ||||
| ) |
| std::map<uint64_t, RegisterSet> FindConstantsPolicy::rsets |
| uint32_t FindConstantsPolicy::addr |
| size_t FindConstantsPolicy::To |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 FindConstantsPolicy::Len |
| size_t To XVariablePtr<Len> FindConstantsPolicy::ifTrue |
| size_t SCLen FindConstantsPolicy::Len |
| size_t SALen size_t SALen size_t SALen size_t SALen size_t SALen size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 size_t Len2 FindConstantsPolicy::Len |
1.4.7