comparison test/testarmasm.py @ 346:3bb7dcfe5529

expanded arm target
author Windel Bouwman
date Fri, 07 Mar 2014 17:05:32 +0100
parents b4882ff0ed06
children 442fb043d149
comparison
equal deleted inserted replaced
345:b4882ff0ed06 346:3bb7dcfe5529
4 from asm import Assembler 4 from asm import Assembler
5 from testasm import AsmTestCaseBase 5 from testasm import AsmTestCaseBase
6 from ppci.target.target_list import arm_target 6 from ppci.target.target_list import arm_target
7 7
8 8
9 a = Assembler(arm_target)
9 10
10 class ArmAssemblerTestCase(AsmTestCaseBase): 11 class ArmAssemblerTestCase(AsmTestCaseBase):
11 """ ARM-mode (not thumb-mode) instruction assembly test case """ 12 """ ARM-mode (not thumb-mode) instruction assembly test case """
12 def setUp(self): 13 def setUp(self):
13 self.t = arm_target 14 self.t = arm_target
14 self.obj = ObjectFile() 15 self.obj = ObjectFile()
15 self.o = BinaryOutputStream(self.obj) 16 self.ostream = BinaryOutputStream(self.obj)
16 self.o.selectSection('.text') 17 self.ostream.selectSection('.text')
17 self.a = Assembler(target=self.t, stream=self.o) 18 self.a = a #Assembler(target=self.t)
18 19
19 def testMovImm(self): 20 def testMovImm(self):
20 self.feed('mov r4, 100') 21 self.feed('mov r4, 100')
21 self.check('6440a0e3') 22 self.check('6440a0e3')
23
24 def testMovImm2(self):
25 self.feed('mov sp, 0x6000')
26 self.check('06daa0e3')
22 27
23 def testAdd2(self): 28 def testAdd2(self):
24 self.feed('add r12, r11, 300') 29 self.feed('add r12, r11, 300')
25 self.check('4bcf8be2') 30 self.check('4bcf8be2')
26 31
51 self.feed('ble sjakie') 56 self.feed('ble sjakie')
52 self.feed('bgt sjakie') 57 self.feed('bgt sjakie')
53 self.feed('beq sjakie') 58 self.feed('beq sjakie')
54 self.feed('bl sjakie') 59 self.feed('bl sjakie')
55 self.check('030000ea 020000da 010000ca 0000000a ffffffeb feffffea fdffffda fcffffca fbffff0a faffffeb') 60 self.check('030000ea 020000da 010000ca 0000000a ffffffeb feffffea fdffffda fcffffca fbffff0a faffffeb')
61
62 def testPush(self):
63 self.feed('push {r11,r5,r4,lr}')
64 self.check('30482de9')
65
66 def testPop(self):
67 self.feed('pop {r4,r5,r6}')
68 self.check('7000bde8')
69
70 def testStr(self):
71 self.feed('str r9, [r2, 33]')
72 self.check('219082e5')
73
74 def testLdr(self):
75 self.feed('ldr r5, [r3, 87]')
76 self.check('575093e5')
77
78 def testSequence1(self):
79 self.feed('sub r4,r5,23')
80 self.feed('blt x')
81 self.feed('x:')
82 self.feed('mul r4,r5,r2')
83 self.check('174045e2 ffffffba 950204e0')
84
85
86 if __name__ == '__main__':
87 unittest.main()