Example #1
0
 def functionDefination(self, signature):
     return self.perform(operation.BeginFunction(signature)).getOutput()
Example #2
0
 def beginFunction(self):
     return self.perform(operation.BeginFunction()).getOutput()
Example #3
0
 def main():
     prog = program.Program([
         instructions.Instruction(operation.LoadInteger(1), False,
                                  [variable.Variable(0)]),
         instructions.Instruction(operation.LoadInteger(9), False,
                                  [variable.Variable(3)]),
         instructions.Instruction(operation.LoadString("thisisastring"),
                                  False, [variable.Variable(1)]),
         instructions.Instruction(operation.LoadInteger(True), False,
                                  [variable.Variable(4)]),
         instructions.Instruction(
             operation.BeginWhile(">"),
             [variable.Variable(0),
              variable.Variable(3)]),
         instructions.Instruction(operation.LoadInteger(1337), False,
                                  [variable.Variable(6)]),
         instructions.Instruction(operation.BeginIf(),
                                  [variable.Variable(2)]),
         instructions.Instruction(operation.LoadString("thisisastring"),
                                  False, [variable.Variable(9)]),
         instructions.Instruction(operation.EndIf()),
         instructions.Instruction(
             operation.BinaryOperation(">"),
             [variable.Variable(0),
              variable.Variable(3)], [variable.Variable(5)]),
         instructions.Instruction(operation.EndWhile()),
         instructions.Instruction(operation.LoadInteger(10), False,
                                  [variable.Variable(31337)]),
     ])
     prog = program.Program([
         instructions.Instruction(operation.LoadInteger(0), False,
                                  [variable.Variable(0)]),
         instructions.Instruction(operation.LoadInteger(1), False,
                                  [variable.Variable(1)]),
         instructions.Instruction(operation.LoadInteger(10), False,
                                  [variable.Variable(2)]),
         instructions.Instruction(operation.LoadInteger(10), False,
                                  [variable.Variable(3)]),
         instructions.Instruction(operation.LoadInteger(20), False,
                                  [variable.Variable(4)]),
         instructions.Instruction(operation.LoadInteger(5), False,
                                  [variable.Variable(5)]),
         instructions.Instruction(operation.Phi(), [variable.Variable(3)],
                                  [variable.Variable(6)]),
         instructions.Instruction(operation.Phi(), [variable.Variable(4)],
                                  [variable.Variable(7)]),
         instructions.Instruction(operation.BeginFor("++", "<"), [
             variable.Variable(0),
             variable.Variable(2),
             variable.Variable(8)
         ]),
         instructions.Instruction(
             operation.BinaryOperation("<"),
             [variable.Variable(8),
              variable.Variable(5)], [variable.Variable(6)]),
         instructions.Instruction(operation.BeginIf(),
                                  [variable.Variable(6)], False),
         instructions.Instruction(operation.LoadInteger(0), False,
                                  [variable.Variable(9)]),
         instructions.Instruction(
             operation.BeginWhile("<"),
             [variable.Variable(9),
              variable.Variable(5)], False),
         instructions.Instruction(
             operation.BinaryOperation("+"),
             [variable.Variable(6),
              variable.Variable(1)], [variable.Variable(10)]),
         instructions.Instruction(
             operation.Copy(),
             [variable.Variable(6),
              variable.Variable(10)]),
         instructions.Instruction(
             operation.BinaryOperation("+"),
             [variable.Variable(9),
              variable.Variable(1)], [variable.Variable(11)]),
         instructions.Instruction(
             operation.Copy(),
             [variable.Variable(6),
              variable.Variable(10)]),
         instructions.Instruction(
             operation.BeginFunction(
                 typesData.FunctionSignature(2, [variable.Variable(11)])),
             False, [variable.Variable(1)],
             [variable.Variable(10),
              variable.Variable(11)]),
         instructions.Instruction(
             operation.BinaryOperation("+"),
             [variable.Variable(10),
              variable.Variable(11)], [variable.Variable(2)]),
         instructions.Instruction(operation.LoadString("somestring"), False,
                                  [variable.Variable(3)]),
         instructions.Instruction(operation.Return(),
                                  [variable.Variable(2)]),
         instructions.Instruction(operation.EndFunction()),
         instructions.Instruction(operation.LoadInteger(1337), False,
                                  [variable.Variable(4)]),
         instructions.Instruction(operation.CallFunction(2), [
             variable.Variable(1),
             variable.Variable(4),
             variable.Variable(0)
         ], [variable.Variable(6)]),
         instructions.Instruction(operation.EndWhile(), False, False),
         instructions.Instruction(operation.BeginElse(), False, False),
         instructions.Instruction(operation.LoadInteger(0), False,
                                  [variable.Variable(9)]),
         instructions.Instruction(
             operation.BeginWhile("<"),
             [variable.Variable(9),
              variable.Variable(5)], False),
         instructions.Instruction(
             operation.BinaryOperation("+"),
             [variable.Variable(7),
              variable.Variable(1)], [variable.Variable(10)]),
         instructions.Instruction(
             operation.Copy(),
             [variable.Variable(7),
              variable.Variable(10)]),
         instructions.Instruction(
             operation.BinaryOperation("+"),
             [variable.Variable(9),
              variable.Variable(1)], [variable.Variable(11)]),
         instructions.Instruction(
             operation.Copy(),
             [variable.Variable(6),
              variable.Variable(10)]),
         instructions.Instruction(operation.EndWhile(), False, False),
         instructions.Instruction(operation.EndIf(), False, False),
         instructions.Instruction(operation.EndFor(), False, False),
         instructions.Instruction(operation.LoadInteger(1), False,
                                  [variable.Variable(90)]),
     ])
     program.Program([
         instructions.Instruction(operation.LoadInteger(1), False,
                                  [variable.Variable(0)]),
         instructions.Instruction(
             operation.BeginFunction(
                 typesData.FunctionSignature(2, [variable.Variable(11)])),
             False, [variable.Variable(1)],
             [variable.Variable(10),
              variable.Variable(11)]),
         instructions.Instruction(
             operation.BinaryOperation("+"),
             [variable.Variable(10),
              variable.Variable(11)], [variable.Variable(2)]),
         instructions.Instruction(operation.LoadString("somestring"), False,
                                  [variable.Variable(3)]),
         instructions.Instruction(operation.Return(),
                                  [variable.Variable(2)]),
         instructions.Instruction(operation.EndFunction()),
         instructions.Instruction(operation.LoadInteger(1337), False,
                                  [variable.Variable(4)]),
         instructions.Instruction(operation.CallFunction(2), [
             variable.Variable(1),
             variable.Variable(4),
             variable.Variable(0)
         ], [variable.Variable(6)]),
         instructions.Instruction(operation.LoadInteger(1337), False,
                                  [variable.Variable(7)]),
     ])
     print prog
     ctx = ContextAnalyzer(prog)
     ctx.doAnalyze()
Example #4
0
            [variable.Variable(9), variable.Variable(1)],
            [variable.Variable(11)]),
        instructions.Instruction(
            operation.Copy(),
            [variable.Variable(6), variable.Variable(10)]),
        instructions.Instruction(operation.EndWhile(), False, False),
        instructions.Instruction(operation.EndIf(), False, False),
        instructions.Instruction(operation.EndFor(), False, False)
    ])

    Program()
    Program([
        instructions.Instruction(operation.LoadInteger(1), False,
                                 [variable.Variable(0)]),
        instructions.Instruction(
            operation.BeginFunction(typesData.FunctionSignature(2)), False,
            [variable.Variable(1)],
            [variable.Variable(10),
             variable.Variable(11)]),
        instructions.Instruction(
            operation.BinaryOperation("+"),
            [variable.Variable(10),
             variable.Variable(11)], [variable.Variable(2)]),
        instructions.Instruction(operation.LoadString("somestring"), False,
                                 [variable.Variable(3)]),
        instructions.Instruction(operation.Return(), [variable.Variable(3)]),
        instructions.Instruction(operation.EndFunction()),
        instructions.Instruction(operation.LoadInteger(1337), False,
                                 [variable.Variable(4)]),
        instructions.Instruction(
            operation.CallFunction(2),
Example #5
0
    def main():
        prog = program.Program([
            instructions.Instruction(operation.LoadInteger(10), False,
                                     [variable.Variable(0)]),
            instructions.Instruction(operation.LoadFloat(1.1), False,
                                     [variable.Variable(1)]),
            instructions.Instruction(operation.LoadBoolean(True), False,
                                     [variable.Variable(1)]),
            instructions.Instruction(operation.LoadString("qweqweqweqwe"),
                                     False, [variable.Variable(0)]),
            instructions.Instruction(operation.BeginIf(),
                                     [variable.Variable(2)]),
            instructions.Instruction(operation.BeginElse()),
            instructions.Instruction(operation.EndIf())
        ])

        prog = program.Program([
            instructions.Instruction(operation.LoadString("phar"), False,
                                     [variable.Variable(100)]),
            instructions.Instruction(operation.Include(),
                                     [variable.Variable(100)]),
            instructions.Instruction(operation.Include(),
                                     [variable.Variable(100)]),
            instructions.Instruction(operation.LoadInteger(1), False,
                                     [variable.Variable(0)]),
            instructions.Instruction(
                operation.BeginFunction(typesData.FunctionSignature(2)), False,
                [variable.Variable(1)],
                [variable.Variable(10),
                 variable.Variable(11)]),
            instructions.Instruction(
                operation.BinaryOperation("+"),
                [variable.Variable(10),
                 variable.Variable(11)], [variable.Variable(2)]),
            instructions.Instruction(operation.LoadString("somestring"), False,
                                     [variable.Variable(3)]),
            instructions.Instruction(operation.Return(),
                                     [variable.Variable(2)]),
            instructions.Instruction(operation.EndFunction()),
            instructions.Instruction(operation.LoadInteger(1337), False,
                                     [variable.Variable(4)]),
            instructions.Instruction(operation.CallFunction(2), [
                variable.Variable(1),
                variable.Variable(4),
                variable.Variable(0)
            ], [variable.Variable(6)]),
            instructions.Instruction(operation.LoadInteger(1337), False,
                                     [variable.Variable(7)]),
            instructions.Instruction(operation.Break()),
            instructions.Instruction(operation.Continue()),
            instructions.Instruction(operation.UnaryOperation("++"),
                                     [variable.Variable(0)],
                                     [variable.Variable(0)]),
        ])

        prog = program.Program([
            instructions.Instruction(operation.LoadString("phar"), False,
                                     [variable.Variable(100)]),
            instructions.Instruction(operation.Include(),
                                     [variable.Variable(100)]),
            instructions.Instruction(operation.Include(),
                                     [variable.Variable(100)]),
            instructions.Instruction(operation.LoadInteger(0), False,
                                     [variable.Variable(0)]),
            instructions.Instruction(operation.LoadInteger(1), False,
                                     [variable.Variable(1)]),
            instructions.Instruction(operation.LoadInteger(10), False,
                                     [variable.Variable(2)]),
            instructions.Instruction(operation.LoadInteger(10), False,
                                     [variable.Variable(3)]),
            instructions.Instruction(operation.LoadInteger(20), False,
                                     [variable.Variable(4)]),
            instructions.Instruction(operation.LoadInteger(5), False,
                                     [variable.Variable(5)]),
            instructions.Instruction(operation.LoadInteger(50), False,
                                     [variable.Variable(8)]),
            instructions.Instruction(operation.Phi(), [variable.Variable(3)],
                                     [variable.Variable(6)]),
            instructions.Instruction(operation.Phi(), [variable.Variable(4)],
                                     [variable.Variable(7)]),
            instructions.Instruction(operation.BeginFor("++", "<"), [
                variable.Variable(0),
                variable.Variable(2),
                variable.Variable(8)
            ], False, [variable.Variable(80)]),
            instructions.Instruction(
                operation.BinaryOperation("<"),
                [variable.Variable(8),
                 variable.Variable(5)], [variable.Variable(6)]),
            instructions.Instruction(operation.BeginIf(),
                                     [variable.Variable(6)], False),
            instructions.Instruction(operation.LoadInteger(0), False,
                                     [variable.Variable(9)]),
            instructions.Instruction(
                operation.BeginWhile("<"),
                [variable.Variable(9),
                 variable.Variable(5)], False),
            instructions.Instruction(
                operation.BinaryOperation("+"),
                [variable.Variable(6),
                 variable.Variable(1)], [variable.Variable(10)]),
            instructions.Instruction(
                operation.Copy(),
                [variable.Variable(6),
                 variable.Variable(10)]),
            instructions.Instruction(
                operation.BinaryOperation("+"),
                [variable.Variable(9),
                 variable.Variable(1)], [variable.Variable(11)]),
            instructions.Instruction(
                operation.Copy(),
                [variable.Variable(6),
                 variable.Variable(10)]),
            instructions.Instruction(operation.EndWhile(), False, False),
            instructions.Instruction(operation.BeginElse(), False, False),
            instructions.Instruction(operation.LoadInteger(0), False,
                                     [variable.Variable(9)]),
            instructions.Instruction(
                operation.BeginWhile("<"),
                [variable.Variable(9),
                 variable.Variable(5)], False),
            instructions.Instruction(
                operation.BinaryOperation("+"),
                [variable.Variable(7),
                 variable.Variable(1)], [variable.Variable(10)]),
            instructions.Instruction(
                operation.Copy(),
                [variable.Variable(7),
                 variable.Variable(10)]),
            instructions.Instruction(
                operation.BinaryOperation("+"),
                [variable.Variable(9),
                 variable.Variable(1)], [variable.Variable(11)]),
            instructions.Instruction(
                operation.Copy(),
                [variable.Variable(6),
                 variable.Variable(10)]),
            instructions.Instruction(operation.EndWhile(), False, False),
            instructions.Instruction(operation.EndIf(), False, False),
            instructions.Instruction(operation.EndFor(), False, False),
            instructions.Instruction(operation.LoadInteger(1), False,
                                     [variable.Variable(90)]),
        ])
        # print prog
        l = Lifter(prog)
        l.doLifting()
        print l.emitter