Don't fudge the name of IndexRefs; dig in to find the ref's name.
Chris Pressey
4 years ago
155 | 155 | elif isinstance(src, ConstantRef): |
156 | 156 | self.emitter.emit(LDA(Immediate(Byte(src.value)))) |
157 | 157 | elif isinstance(src, IndexedRef) and src.index == REG_X: |
158 | self.emitter.emit(LDA(AbsoluteX(self.get_label(src.name)))) | |
158 | self.emitter.emit(LDA(AbsoluteX(self.get_label(src.ref.name)))) | |
159 | 159 | elif isinstance(src, IndexedRef) and src.index == REG_Y: |
160 | self.emitter.emit(LDA(AbsoluteY(self.get_label(src.name)))) | |
160 | self.emitter.emit(LDA(AbsoluteY(self.get_label(src.ref.name)))) | |
161 | 161 | elif isinstance(src, IndirectRef) and isinstance(src.ref.type, PointerType): |
162 | 162 | self.emitter.emit(LDA(IndirectY(self.get_label(src.ref.name)))) |
163 | 163 | else: |
168 | 168 | elif isinstance(src, ConstantRef): |
169 | 169 | self.emitter.emit(LDX(Immediate(Byte(src.value)))) |
170 | 170 | elif isinstance(src, IndexedRef) and src.index == REG_Y: |
171 | self.emitter.emit(LDX(AbsoluteY(self.get_label(src.name)))) | |
171 | self.emitter.emit(LDX(AbsoluteY(self.get_label(src.ref.name)))) | |
172 | 172 | else: |
173 | 173 | self.emitter.emit(LDX(Absolute(self.get_label(src.name)))) |
174 | 174 | elif dest == REG_Y: |
177 | 177 | elif isinstance(src, ConstantRef): |
178 | 178 | self.emitter.emit(LDY(Immediate(Byte(src.value)))) |
179 | 179 | elif isinstance(src, IndexedRef) and src.index == REG_X: |
180 | self.emitter.emit(LDY(AbsoluteX(self.get_label(src.name)))) | |
180 | self.emitter.emit(LDY(AbsoluteX(self.get_label(src.ref.name)))) | |
181 | 181 | else: |
182 | 182 | self.emitter.emit(LDY(Absolute(self.get_label(src.name)))) |
183 | 183 | else: |