angr.ailment.expression¶
AIL Expression classes.
AIL expression instances are angr.rustylib.ailment.Expression – a single Rust pyclass wrapping the
AilExpression enum. The per-variant classes in this module (Const, BinaryOp, Load, …) are Python-side
marker classes:
Each marker’s
__new__calls one of theExpression._new_*factory static methods and returns the resultingExpressioninstance.A metaclass on each marker makes
isinstance(x, Const)work by dispatching on the variant tag (Expression.kind). The_AilMarkerMetachecks the tag.For static type checkers each marker name is aliased to the
Expressionpyclass itself.Python-side subclassing of these markers is not supported.
- class angr.ailment.expression.ITE¶
Bases:
objectMarker for
Expressioninstances whose variant isITE.- static __new__(cls, idx, cond, iffalse, iftrue, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Array¶
Bases:
objectMarker for
Expressioninstances whose variant isArray.- static __new__(cls, idx, elements, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.BasePointerOffset¶
Bases:
objectMarker for
Expressioninstances whose variant isBasePointerOffset.- static __new__(cls, idx, bits, base, offset, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.BinaryOp¶
Bases:
objectMarker for
Expressioninstances whose variant isBinaryOp.- COMPARISON_NEGATION = {'CmpEQ': 'CmpNE', 'CmpGE': 'CmpLT', 'CmpGT': 'CmpLE', 'CmpLE': 'CmpGT', 'CmpLT': 'CmpGE', 'CmpNE': 'CmpEQ'}¶
- static __new__(cls, idx, op, operands, signed=False, *, bits=None, floating_point=False, rounding_mode=None, vector_count=None, vector_size=None, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Call¶
Bases:
objectMarker for
Expressioninstances whose variant isCall.isinstancealso matchesMacro/FunctionLikeMacroinstances to preserve the former subclass relationships.- static __new__(cls, idx, target, args=None, bits=None, arg_vvars=None, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.ComboRegister¶
Bases:
objectMarker for
Expressioninstances whose variant isComboRegister.- static __new__(cls, idx, registers, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Const¶
Bases:
objectMarker for
Expressioninstances whose variant isConst.Const(idx, value, bits, **tags)returns anExpression– the marker class is not in the instance’s MRO.- static __new__(cls, idx, value, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Convert¶
Bases:
objectMarker for
Expressioninstances whose variant isConvert.- TYPE_INT = <ConvertType.TYPE_INT: 0>
- TYPE_FP = <ConvertType.TYPE_FP: 1>
- static __new__(cls, idx, from_bits, to_bits, is_signed, operand, from_type=None, to_type=None, rounding_mode=None, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.ConvertType
Bases:
objectMirrors angr.ailment.expression.ConvertType (Enum).
- TYPE_FP = <ConvertType.TYPE_FP: 1>
- TYPE_INT = <ConvertType.TYPE_INT: 0>
- name¶
- value¶
- class angr.ailment.expression.DirtyExpression¶
Bases:
objectMarker for
Expressioninstances whose variant isDirtyExpression.- static __new__(cls, idx, callee, operands, *, guard=None, mfx=None, maddr=None, msize=None, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Expression¶
Bases:
objectMarker for
isinstance(x, Expression)checks.Real AIL expression instances are
angr.rustylib.ailment.Expression(a single fat-enum pyclass). The per-variant markers (Const, BinaryOp, …) dispatch on the variant tag via metaclass__instancecheck__.- __init__(idx=None, *_extra, **tags)¶
- class angr.ailment.expression.Extract¶
Bases:
objectMarker for
Expressioninstances whose variant isExtract.- static __new__(cls, idx, bits, base, offset, endness, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.FunctionLikeMacro¶
Bases:
objectMarker for
Expressioninstances whose variant isFunctionLikeMacro.- static __new__(cls, idx, name, args, bits=None, delimiter='()', **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Insert¶
Bases:
objectMarker for
Expressioninstances whose variant isInsert.- static __new__(cls, idx, base, offset, value, endness, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Let¶
Bases:
objectMarker for
Expressioninstances whose variant isLet.- static __new__(cls, idx, defs, src, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Load¶
Bases:
objectMarker for
Expressioninstances whose variant isLoad.- static __new__(cls, idx, addr, size, endness, *, guard=None, alt=None, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Macro¶
Bases:
objectMarker for
Expressioninstances whose variant isMacro(abstract).Also matches
FunctionLikeMacroinstances to preserve theisinstance(x, Macro)-> True relationship of the former class hierarchy.- static __new__(cls, idx, name, delimiter='()', **tags)¶
- Return type:
Expression
- class angr.ailment.expression.MultiStatementExpression¶
Bases:
objectMarker for
Expressioninstances whose variant isMultiStatementExpression.- static __new__(cls, idx, stmts, expr, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Phi¶
Bases:
objectMarker for
Expressioninstances whose variant isPhi.- static __new__(cls, idx, bits, src_and_vvars, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Register¶
Bases:
objectMarker for
Expressioninstances whose variant isRegister.- static __new__(cls, idx, reg_offset, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Reinterpret¶
Bases:
objectMarker for
Expressioninstances whose variant isReinterpret.- static __new__(cls, idx, from_bits, from_type, to_bits, to_type, operand, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.RustEnum¶
Bases:
objectMarker for
Expressioninstances whose variant isRustEnum.- static __new__(cls, idx, name, fields, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.StackBaseOffset¶
Bases:
objectMarker for
Expressioninstances whose variant isStackBaseOffset.- static __new__(cls, idx, bits, offset, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.StringLiteral¶
Bases:
objectMarker for
Expressioninstances whose variant isStringLiteral.- static __new__(cls, idx, data, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Struct¶
Bases:
objectMarker for
Expressioninstances whose variant isStruct.- static __new__(cls, idx, name, fields, field_offsets, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.Tmp¶
Bases:
objectMarker for
Expressioninstances whose variant isTmp.- static __new__(cls, idx, tmp_idx, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.UnaryOp¶
Bases:
objectMarker for
Expressioninstances whose variant isUnaryOp.- static __new__(cls, idx, op, operand, bits=None, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.VEXCCallExpression¶
Bases:
objectMarker for
Expressioninstances whose variant isVEXCCallExpression.- static __new__(cls, idx, callee, operands, bits, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.VirtualVariable¶
Bases:
objectMarker for
Expressioninstances whose variant isVirtualVariable.- static __new__(cls, idx, varid, bits, category, oident=None, reg_vvars=None, **tags)¶
- Return type:
Expression
- class angr.ailment.expression.VirtualVariableCategory
Bases:
objectMirrors angr.ailment.expression.VirtualVariableCategory (IntEnum).
- COMBO_REGISTER = <VirtualVariableCategory.COMBO_REGISTER: 5>
- MEMORY = <VirtualVariableCategory.MEMORY: 2>
- PARAMETER = <VirtualVariableCategory.PARAMETER: 3>
- REGISTER = <VirtualVariableCategory.REGISTER: 0>
- STACK = <VirtualVariableCategory.STACK: 1>
- TMP = <VirtualVariableCategory.TMP: 4>
- UNKNOWN = <VirtualVariableCategory.UNKNOWN: 6>
- name¶
- value¶
- angr.ailment.expression.negate(expr, manager)¶
Negate a comparison or boolean expression.
- Return type:
- Parameters:
expr (Expression)