comparison python/ppci/target/arm/instructions.py @ 364:c49459768aaa

Work on globals
author Windel Bouwman
date Wed, 19 Mar 2014 20:24:03 +0100
parents c05ab629976a
children 98ff43cfdd36
comparison
equal deleted inserted replaced
363:396e5cefba13 364:c49459768aaa
1 1
2 from ..basetarget import Instruction 2 from ..basetarget import Instruction, LabelAddress
3 from ...bitfun import rotate_left 3 from ...bitfun import rotate_left
4 4
5 from .token import ArmToken 5 from .token import ArmToken
6 from .registers import R0, SP, ArmRegister 6 from .registers import R0, SP, ArmRegister
7 7
29 def __init__(self, v): 29 def __init__(self, v):
30 super().__init__() 30 super().__init__()
31 assert isinstance(v, int) 31 assert isinstance(v, int)
32 self.v = v 32 self.v = v
33 33
34 def __repr__(self): 34
35 return 'DCD {}'.format(hex(self.v)) 35 class Dcd(ArmInstruction):
36 36 def __init__(self, v):
37 37 super().__init__()
38 class Dcd(ConstantData): 38 assert isinstance(v, int) or isinstance(v, LabelAddress)
39 def encode(self): 39 self.v = v
40 self.token[0:32] = self.v 40
41 return self.token.encode() 41 def encode(self):
42 42 if type(self.v) is int:
43 def __repr__(self): 43 self.token[0:32] = self.v
44 return 'DCD {}'.format(hex(self.v)) 44 else:
45 self.token[0:32] = 0
46 return self.token.encode()
47
48 def relocations(self):
49 if type(self.v) is LabelAddress:
50 return [(self.v.name, 'absaddr32')]
51 return []
52
53 def __repr__(self):
54 if type(self.v) is int:
55 return 'DCD {}'.format(hex(self.v))
56 else:
57 return 'DCD ={}'.format(self.v.name)
45 58
46 59
47 class Db(ConstantData): 60 class Db(ConstantData):
48 def encode(self): 61 def encode(self):
49 assert self.v < 256 62 assert self.v < 256