当前位置: 首页>>代码示例>>Python>>正文


Python TritonContext.setConcreteVariableValue方法代码示例

本文整理汇总了Python中triton.TritonContext.setConcreteVariableValue方法的典型用法代码示例。如果您正苦于以下问题:Python TritonContext.setConcreteVariableValue方法的具体用法?Python TritonContext.setConcreteVariableValue怎么用?Python TritonContext.setConcreteVariableValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在triton.TritonContext的用法示例。


在下文中一共展示了TritonContext.setConcreteVariableValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: TestAstConversion

# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import setConcreteVariableValue [as 别名]
class TestAstConversion(unittest.TestCase):

    """Testing the AST conversion Triton <-> z3."""

    def setUp(self):
        """Define the arch."""
        self.Triton = TritonContext()
        self.Triton.setArchitecture(ARCH.X86_64)

        self.astCtxt = self.Triton.getAstContext()

        self.sv1 = self.Triton.newSymbolicVariable(8)
        self.sv2 = self.Triton.newSymbolicVariable(8)

        self.v1 = self.astCtxt.variable(self.sv1)
        self.v2 = self.astCtxt.variable(self.sv2)

    def test_binop(self):
        """
        Check python binary operation.

        Fuzz int8/uint8 binop values and check triton/z3 and python results.
        """
        # No simplification available
        # This only going to test Triton <-> z3 AST conversions.
        binop = [
            # Overloaded operators
            operator.and_,
            operator.add,
            operator.sub,
            operator.xor,
            operator.or_,
            operator.mul,
            operator.lshift,
            operator.rshift,
            operator.eq,
            operator.ne,
            operator.le,
            operator.ge,
            operator.lt,
            operator.gt,
            operator.div,
            operator.mod,
        ]

        for _ in xrange(100):
            cv1 = random.randint(0, 255)
            cv2 = random.randint(0, 255)
            self.Triton.setConcreteVariableValue(self.sv1, cv1)
            self.Triton.setConcreteVariableValue(self.sv2, cv2)
            for op in binop:
                n = op(self.v1, self.v2)
                if op == operator.div and cv2 == 0:
                    ref = 255
                elif op == operator.mod and cv2 == 0:
                    ref = cv1
                else:
                    ref = op(cv1, cv2) % (2 ** 8)
                self.assertEqual(ref, n.evaluate(),
                                 "ref = {} and triton value = {} with operator {}"
                                 " operands were {} and {}".format(ref,
                                                                   n.evaluate(),
                                                                   op,
                                                                   cv1,
                                                                   cv2))
                self.assertEqual(ref, self.Triton.evaluateAstViaZ3(n))
                self.assertEqual(ref, self.Triton.simplify(n, True).evaluate())

    def test_unop(self):
        """
        Check python unary operation.

        Fuzz int8/uint8 binop values and check triton/z3 and python results.
        """
        # No simplification available
        # This only going to test Triton <-> z3 AST conversions.
        unop = [
            operator.invert,
            operator.neg,
        ]

        for cv1 in xrange(0, 256):
            self.Triton.setConcreteVariableValue(self.sv1, cv1)
            for op in unop:
                n = op(self.v1)
                ref = op(cv1) % (2 ** 8)
                self.assertEqual(ref, n.evaluate(),
                                 "ref = {} and triton value = {} with operator "
                                 "{} operands was {}".format(ref,
                                                             n.evaluate(),
                                                             op,
                                                             cv1))
                self.assertEqual(ref, self.Triton.evaluateAstViaZ3(n))
                self.assertEqual(ref, self.Triton.simplify(n, True).evaluate())

    def test_smtbinop(self):
        """
        Check smt binary operation.

        Fuzz int8/uint8 binop values and check triton/z3 and python results.
#.........这里部分代码省略.........
开发者ID:ispras,项目名称:Triton,代码行数:103,代码来源:test_ast_conversion.py


注:本文中的triton.TritonContext.setConcreteVariableValue方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。