Mercurial > lcfOS
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() |