7 | 7 |
raise NotImplementedError
|
8 | 8 |
|
9 | 9 |
def serialize(self, addr):
|
10 | |
"""Should return an array of unsigned bytes (integers from 0 to 255.)"""
|
|
10 |
"""Should return an array of unsigned bytes (integers from 0 to 255.)
|
|
11 |
`addr` is the address the value is being serialized at; for most objects
|
|
12 |
it makes no difference, but some objects (like relative branches) do care."""
|
11 | 13 |
raise NotImplementedError
|
12 | 14 |
|
13 | 15 |
|
|
24 | 26 |
def size(self):
|
25 | 27 |
return 1
|
26 | 28 |
|
27 | |
def serialize(self, addr=None):
|
|
29 |
def serialize(self, addr):
|
28 | 30 |
return [self.value]
|
29 | 31 |
|
30 | 32 |
def __repr__(self):
|
|
39 | 41 |
def size(self):
|
40 | 42 |
return 2
|
41 | 43 |
|
42 | |
def serialize(self, addr=None):
|
|
44 |
def serialize(self, addr):
|
43 | 45 |
word = self.value
|
44 | 46 |
low = word & 255
|
45 | 47 |
high = (word >> 8) & 255
|
|
59 | 61 |
def size(self):
|
60 | 62 |
return self._size
|
61 | 63 |
|
62 | |
def serialize(self, addr=None):
|
|
64 |
def serialize(self, addr):
|
63 | 65 |
buf = []
|
64 | 66 |
for emittable in self.value:
|
65 | |
buf.extend(emittable.serialize())
|
|
67 |
buf.extend(emittable.serialize(addr)) # FIXME: addr + offset
|
66 | 68 |
while len(buf) < self.size():
|
67 | 69 |
buf.append(0)
|
68 | 70 |
return buf
|
|
86 | 88 |
def size(self):
|
87 | 89 |
return 2
|
88 | 90 |
|
89 | |
def serialize(self, addr=None, offset=0):
|
|
91 |
def serialize(self, addr, offset=0):
|
90 | 92 |
assert self.addr is not None, "unresolved label: %s" % self.name
|
91 | |
return Word(self.addr + offset).serialize()
|
|
93 |
return Word(self.addr + offset).serialize(addr)
|
92 | 94 |
|
93 | 95 |
def serialize_relative_to(self, addr):
|
94 | 96 |
assert self.addr is not None, "unresolved label: %s" % self.name
|
95 | |
return Byte(self.addr - (addr + 2)).serialize()
|
96 | |
|
97 | |
def serialize_as_zero_page(self, offset=0):
|
|
97 |
return Byte(self.addr - (addr + 2)).serialize(addr)
|
|
98 |
|
|
99 |
def serialize_as_zero_page(self, addr, offset=0):
|
98 | 100 |
assert self.addr is not None, "unresolved label: %s" % self.name
|
99 | |
return Byte(self.addr + offset).serialize()
|
|
101 |
return Byte(self.addr + offset).serialize(addr)
|
100 | 102 |
|
101 | 103 |
def __repr__(self):
|
102 | 104 |
addr_s = ', addr=%r' % self.addr if self.addr is not None else ''
|
|
113 | 115 |
def size(self):
|
114 | 116 |
self.label.size()
|
115 | 117 |
|
116 | |
def serialize(self, addr=None):
|
117 | |
return self.label.serialize(offset=self.offset)
|
118 | |
|
119 | |
def serialize_as_zero_page(self, offset=0):
|
120 | |
return self.label.serialize_as_zero_page(offset=self.offset)
|
|
118 |
def serialize(self, addr):
|
|
119 |
return self.label.serialize(addr, offset=self.offset)
|
|
120 |
|
|
121 |
def serialize_as_zero_page(self, addr, offset=0):
|
|
122 |
return self.label.serialize_as_zero_page(addr, offset=self.offset)
|
121 | 123 |
|
122 | 124 |
def __repr__(self):
|
123 | 125 |
return "%s(%r, %r)" % (self.__class__.__name__, self.label, self.offset)
|
|
131 | 133 |
def size(self):
|
132 | 134 |
return 1
|
133 | 135 |
|
134 | |
def serialize(self, addr=None):
|
135 | |
return [self.label.serialize()[0]]
|
|
136 |
def serialize(self, addr):
|
|
137 |
return [self.label.serialize(addr)[0]]
|
136 | 138 |
|
137 | 139 |
def __repr__(self):
|
138 | 140 |
return "%s(%r)" % (self.__class__.__name__, self.label)
|
|
146 | 148 |
def size(self):
|
147 | 149 |
return 1
|
148 | 150 |
|
149 | |
def serialize(self, addr=None):
|
150 | |
return [self.label.serialize()[1]]
|
|
151 |
def serialize(self, addr):
|
|
152 |
return [self.label.serialize(addr)[1]]
|
151 | 153 |
|
152 | 154 |
def __repr__(self):
|
153 | 155 |
return "%s(%r)" % (self.__class__.__name__, self.label)
|