angr.analyses.propagator.vex_vars 源代码

# VEX Variables
from __future__ import annotations


[文档] class VEXVariable: __slots__ = () def __hash__(self): raise NotImplementedError def __eq__(self, other): raise NotImplementedError
[文档] class VEXMemVar: __slots__ = ( "addr", "size", )
[文档] def __init__(self, addr: int, size: int): self.addr = addr self.size = size
def __hash__(self): return hash((VEXMemVar, self.addr, self.size)) def __eq__(self, other): return type(other) is VEXMemVar and other.addr == self.addr and other.size == self.size def __repr__(self): return f"<mem {self.addr:#x}[{self.size} bytes]>"
[文档] class VEXReg(VEXVariable): __slots__ = ( "offset", "size", )
[文档] def __init__(self, offset, size): self.offset = offset self.size = size
def __hash__(self): return hash((VEXReg, self.offset, self.size)) def __eq__(self, other): return type(other) is VEXReg and other.offset == self.offset and other.size == self.size def __repr__(self): return f"<reg {self.offset}[{self.size}]>"
[文档] class VEXTmp(VEXVariable): __slots__ = ("tmp",)
[文档] def __init__(self, tmp): self.tmp = tmp
def __hash__(self): return hash((VEXTmp, self.tmp)) def __eq__(self, other): return type(other) is VEXTmp and other.tmp == self.tmp def __repr__(self): return f"<tmp {self.tmp}>"