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


Python TritonContext.setAstRepresentationMode方法代码示例

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


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

示例1: TestAstRepresentation

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

    """Testing the AST Representation."""

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

        self.v1  = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
        self.v2  = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
        self.ref = self.Triton.newSymbolicExpression(self.v1 + self.v2, "ref test")

        # Default
        self.assertEqual(self.Triton.getAstRepresentationMode(), AST_REPRESENTATION.SMT)

        self.node = [
            # Overloaded operators                              # SMT                                                           # Python
            ((self.v1 & self.v2),                               "(bvand SymVar_0 SymVar_1)",                                    "(SymVar_0 & SymVar_1)"),
            ((self.v1 + self.v2),                               "(bvadd SymVar_0 SymVar_1)",                                    "((SymVar_0 + SymVar_1) & 0xFF)"),
            ((self.v1 - self.v2),                               "(bvsub SymVar_0 SymVar_1)",                                    "((SymVar_0 - SymVar_1) & 0xFF)"),
            ((self.v1 ^ self.v2),                               "(bvxor SymVar_0 SymVar_1)",                                    "(SymVar_0 ^ SymVar_1)"),
            ((self.v1 | self.v2),                               "(bvor SymVar_0 SymVar_1)",                                     "(SymVar_0 | SymVar_1)"),
            ((self.v1 * self.v2),                               "(bvmul SymVar_0 SymVar_1)",                                    "((SymVar_0 * SymVar_1) & 0xFF)"),
            ((self.v1 / self.v2),                               "(bvudiv SymVar_0 SymVar_1)",                                   "(SymVar_0 / SymVar_1)"),
            ((self.v1 % self.v2),                               "(bvurem SymVar_0 SymVar_1)",                                   "(SymVar_0 % SymVar_1)"),
            ((self.v1 << self.v2),                              "(bvshl SymVar_0 SymVar_1)",                                    "((SymVar_0 << SymVar_1) & 0xFF)"),
            ((self.v1 >> self.v2),                              "(bvlshr SymVar_0 SymVar_1)",                                   "(SymVar_0 >> SymVar_1)"),
            ((~self.v1),                                        "(bvnot SymVar_0)",                                             "(~(SymVar_0) & 0xFF)"),
            ((-self.v1),                                        "(bvneg SymVar_0)",                                             "-SymVar_0"),
            ((self.v1 == self.v2),                              "(= SymVar_0 SymVar_1)",                                        "(SymVar_0 == SymVar_1)"),
            ((self.v1 != self.v2),                              "(not (= SymVar_0 SymVar_1))",                                  "not (SymVar_0 == SymVar_1)"),
            ((self.v1 <= self.v2),                              "(bvule SymVar_0 SymVar_1)",                                    "(SymVar_0 <= SymVar_1)"),
            ((self.v1 >= self.v2),                              "(bvuge SymVar_0 SymVar_1)",                                    "(SymVar_0 >= SymVar_1)"),
            ((self.v1 < self.v2),                               "(bvult SymVar_0 SymVar_1)",                                    "(SymVar_0 < SymVar_1)"),
            ((self.v1 > self.v2),                               "(bvugt SymVar_0 SymVar_1)",                                    "(SymVar_0 > SymVar_1)"),

            # AST api                                           # SMT                                                           # Python
            (self.astCtxt.assert_(self.v1 == 0),                "(assert (= SymVar_0 (_ bv0 8)))",                              "assert_((SymVar_0 == 0x0))"),
            (self.astCtxt.bv(2, 8),                             "(_ bv2 8)",                                                    "0x2"),
            (self.astCtxt.bvashr(self.v1, self.v2),             "(bvashr SymVar_0 SymVar_1)",                                   "(SymVar_0 >> SymVar_1)"),
            (self.astCtxt.bvfalse(),                            "(_ bv0 1)",                                                    "0x0"),
            (self.astCtxt.bvnand(self.v1, self.v2),             "(bvnand SymVar_0 SymVar_1)",                                   "(~(SymVar_0 & SymVar_1) & 0xFF)"),
            (self.astCtxt.bvnor(self.v1, self.v2),              "(bvnor SymVar_0 SymVar_1)",                                    "(~(SymVar_0 | SymVar_1) & 0xFF)"),
            (self.astCtxt.bvrol(3, self.v1),                    "((_ rotate_left 3) SymVar_0)",                                 "rol(0x3, SymVar_0)"),
            (self.astCtxt.bvror(2, self.v2),                    "((_ rotate_right 2) SymVar_1)",                                "ror(0x2, SymVar_1)"),
            (self.astCtxt.bvsdiv(self.v1, self.v2),             "(bvsdiv SymVar_0 SymVar_1)",                                   "(SymVar_0 / SymVar_1)"),
            (self.astCtxt.bvsge(self.v1, self.v2),              "(bvsge SymVar_0 SymVar_1)",                                    "(SymVar_0 >= SymVar_1)"),
            (self.astCtxt.bvsgt(self.v1, self.v2),              "(bvsgt SymVar_0 SymVar_1)",                                    "(SymVar_0 > SymVar_1)"),
            (self.astCtxt.bvsle(self.v1, self.v2),              "(bvsle SymVar_0 SymVar_1)",                                    "(SymVar_0 <= SymVar_1)"),
            (self.astCtxt.bvslt(self.v1, self.v2),              "(bvslt SymVar_0 SymVar_1)",                                    "(SymVar_0 < SymVar_1)"),
            (self.astCtxt.bvsmod(self.v1, self.v2),             "(bvsmod SymVar_0 SymVar_1)",                                   "(SymVar_0 % SymVar_1)"),
            (self.astCtxt.bvsrem(self.v1, self.v2),             "(bvsrem SymVar_0 SymVar_1)",                                   "(SymVar_0 % SymVar_1)"),
            (self.astCtxt.bvtrue(),                             "(_ bv1 1)",                                                    "0x1"),
            (self.astCtxt.bvurem(self.v1, self.v2),             "(bvurem SymVar_0 SymVar_1)",                                   "(SymVar_0 % SymVar_1)"),
            (self.astCtxt.bvxnor(self.v1, self.v2),             "(bvxnor SymVar_0 SymVar_1)",                                   "(~(SymVar_0 ^ SymVar_1) & 0xFF)"),
            (self.astCtxt.compound([self.v1, self.v2]),         "SymVar_0\nSymVar_1",                                           "SymVar_0\nSymVar_1"),
            (self.astCtxt.concat([self.v1, self.v2]),           "(concat SymVar_0 SymVar_1)",                                   "((SymVar_0) << 8 | SymVar_1)"),
            (self.astCtxt.declare(self.v1),                     "(declare-fun SymVar_0 () (_ BitVec 8))",                       "SymVar_0 = 0xdeadbeef"),
            (self.astCtxt.distinct(self.v1, self.v2),           "(distinct SymVar_0 SymVar_1)",                                 "(SymVar_0 != SymVar_1)"),
            (self.astCtxt.equal(self.v1, self.v2),              "(= SymVar_0 SymVar_1)",                                        "(SymVar_0 == SymVar_1)"),
            (self.astCtxt.extract(4, 2, self.v1),               "((_ extract 4 2) SymVar_0)",                                   "((SymVar_0 >> 2) & 0x7)"),
            (self.astCtxt.extract(6, 0, self.v1),               "((_ extract 6 0) SymVar_0)",                                   "(SymVar_0 & 0x7F)"),
            (self.astCtxt.extract(7, 0, self.v1),               "SymVar_0",                                                     "SymVar_0"),
            (self.astCtxt.ite(self.v1 == 1, self.v1, self.v2),  "(ite (= SymVar_0 (_ bv1 8)) SymVar_0 SymVar_1)",               "(SymVar_0 if (SymVar_0 == 0x1) else SymVar_1)"),
            (self.astCtxt.land([self.v1 == 1, self.v2 == 2]),   "(and (= SymVar_0 (_ bv1 8)) (= SymVar_1 (_ bv2 8)))",          "((SymVar_0 == 0x1) and (SymVar_1 == 0x2))"),
            (self.astCtxt.let("alias", self.v1, self.v2),       "(let ((alias SymVar_0)) SymVar_1)",                            "SymVar_1"),
            (self.astCtxt.lnot(self.v1 == 0),                   "(not (= SymVar_0 (_ bv0 8)))",                                 "not (SymVar_0 == 0x0)"),
            (self.astCtxt.lor([self.v1 >= 0, self.v2 <= 10]),   "(or (bvuge SymVar_0 (_ bv0 8)) (bvule SymVar_1 (_ bv10 8)))",  "((SymVar_0 >= 0x0) or (SymVar_1 <= 0xA))"),
            (self.astCtxt.reference(self.ref),                  "ref!0",                                                        "ref_0"),
            (self.astCtxt.string("test"),                       "test",                                                         "test"),
            (self.astCtxt.sx(8, self.v1),                       "((_ sign_extend 8) SymVar_0)",                                 "sx(0x8, SymVar_0)"),
            (self.astCtxt.zx(8, self.v1),                       "((_ zero_extend 8) SymVar_0)",                                 "SymVar_0"),
        ]

    def test_smt_representation(self):
        self.Triton.setAstRepresentationMode(AST_REPRESENTATION.SMT)
        self.assertEqual(self.Triton.getAstRepresentationMode(), AST_REPRESENTATION.SMT)
        for n in self.node:
            self.assertEqual(str(n[0]), n[1])

    def test_python_representation(self):
        self.Triton.setAstRepresentationMode(AST_REPRESENTATION.PYTHON)
        self.assertEqual(self.Triton.getAstRepresentationMode(), AST_REPRESENTATION.PYTHON)
        for n in self.node:
            self.assertEqual(str(n[0]), n[2])
开发者ID:ispras,项目名称:Triton,代码行数:89,代码来源:test_ast_representation.py


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