Esempio n. 1
0
    def test_parse_method_ret(self):
        s = (
            ".method public void main() {\n "
            ".locals init (int32 first,\n"
            "int32 second,\n"
            "int32 result)\n"
            "ret\n"
            " }"
        )

        vm = VM()
        p = ParserContext(s)
        mp = MethodParser()
        m = mp.parse(p)

        locals = m.locals
        self.assertEqual(len(locals), 3)
        self.assertEqual(locals[0].name, "first")
        self.assertEqual(locals[0].alias, None)
        self.assertEqual(locals[0].type, Types.Int32)
        self.assertEqual(locals[1].name, "second")
        self.assertEqual(locals[1].alias, None)
        self.assertEqual(locals[1].type, Types.Int32)
        self.assertEqual(locals[2].name, "result")
        self.assertEqual(locals[2].alias, None)
        self.assertEqual(locals[2].type, Types.Int32)

        self.assertEqual(len(m.instructions), 1)
        self.assertEqual("ret", m.instructions[0].name)
Esempio n. 2
0
File: VM.py Progetto: memsom/PyCIL
    def test_parse_method_ret(self):
        s = ('.method public void main() {\n '
            '.locals init (int32 first,\n'
             'int32 second,\n'
             'int32 result)\n'
             'ret\n'
             ' }')
        
        vm = VM()
        p = ParserContext(s)
        mp = MethodParser()
        m = mp.parse(p)
        
        locals = m.locals
        self.assertEqual(len(locals), 3)
        self.assertEqual(locals[0].name, 'first')
        self.assertEqual(locals[0].alias, None)
        self.assertEqual(locals[0].type, Types.Int32)
        self.assertEqual(locals[1].name, 'second')
        self.assertEqual(locals[1].alias, None)
        self.assertEqual(locals[1].type, Types.Int32)   
        self.assertEqual(locals[2].name, 'result')
        self.assertEqual(locals[2].alias, None)
        self.assertEqual(locals[2].type, Types.Int32)       

        self.assertEqual(len(m.instructions), 1)
        self.assertEqual('ret', m.instructions[0].name)
Esempio n. 3
0
    def test_execute_method_add(self):
        s = ".method public int main() {\n " ".maxstack 10\n" "ldc.i4.1\n" "ldc.i4.5\n" "add\n" "ret\n" "}"

        vm = VM()
        p = ParserContext(s)
        mp = MethodParser()
        m = mp.parse(p)
        vm.execute_method(m.get_method())
        self.assertEqual(vm.stack.count(), 1)
        self.assertEqual(vm.stack.pop().value, 6)
Esempio n. 4
0
File: VM.py Progetto: memsom/PyCIL
 def test_execute_method_add(self):
     s = ('.method public int main() {\n '
          '.maxstack 10\n'
          'ldc.i4.1\n'
          'ldc.i4.5\n'
          'add\n'
          'ret\n'
          '}')
     
     vm = VM()
     p = ParserContext(s)
     mp = MethodParser()
     m = mp.parse(p)       
     vm.execute_method(m.get_method())
     self.assertEqual(vm.stack.count(), 1)
     self.assertEqual(vm.stack.pop().value, 6)