|
126 | 126 | 'r15' |
127 | 127 | ] |
128 | 128 |
|
129 | | - |
130 | | -def GetOperands(instr, instruction): |
131 | | - if instr in TYPE3_INSTRUCTIONS: |
132 | | - return None, OFFSET, None, None |
133 | | - |
134 | | - width = 1 if (instruction & 0x40) >> 6 else 2 |
135 | | - |
136 | | - # As is in the same place for Type 1 and 2 instructions |
137 | | - As = (instruction & 0x30) >> 4 |
138 | | - |
139 | | - if instr in TYPE2_INSTRUCTIONS: |
140 | | - src = Registers[instruction & 0xf] |
141 | | - dst = None |
142 | | - Ad = None |
143 | | - |
144 | | - elif instr in TYPE1_INSTRUCTIONS: |
145 | | - src = Registers[(instruction & 0xf00) >> 8] |
146 | | - dst = Registers[instruction & 0xf] |
147 | | - Ad = (instruction & 0x80) >> 7 |
148 | | - |
149 | | - if src == 'pc': |
150 | | - if As == INDEXED_MODE: |
151 | | - As = SYMBOLIC_MODE |
152 | | - elif As == INDIRECT_AUTOINCREMENT_MODE: |
153 | | - As = IMMEDIATE_MODE |
154 | | - |
155 | | - elif src == 'cg': |
156 | | - if As == REGISTER_MODE: |
157 | | - As = CONSTANT_MODE0 |
158 | | - elif As == INDEXED_MODE: |
159 | | - As = CONSTANT_MODE1 |
160 | | - elif As == INDIRECT_REGISTER_MODE: |
161 | | - As = CONSTANT_MODE2 |
162 | | - else: |
163 | | - As = CONSTANT_MODE_NEG1 |
164 | | - |
165 | | - elif src == 'sr': |
166 | | - if As == INDEXED_MODE: |
167 | | - As = ABSOLUTE_MODE |
168 | | - elif As == INDIRECT_REGISTER_MODE: |
169 | | - As = CONSTANT_MODE4 |
170 | | - elif As == INDIRECT_AUTOINCREMENT_MODE: |
171 | | - As = CONSTANT_MODE8 |
172 | | - |
173 | | - if dst and dst == 'sr': |
174 | | - if Ad == INDEXED_MODE: |
175 | | - Ad = ABSOLUTE_MODE |
176 | | - |
177 | | - return src, As, dst, Ad, width |
178 | | - |
179 | | - |
180 | 129 | OperandTokens = [ |
181 | 130 | lambda reg, value: [ # REGISTER_MODE |
182 | 131 | InstructionTextToken(InstructionTextTokenType.RegisterToken, reg) |
@@ -236,19 +185,6 @@ def GetOperands(instr, instruction): |
236 | 185 | ] |
237 | 186 |
|
238 | 187 |
|
239 | | -def GetRegisterValues(instr, instruction): |
240 | | - if instr in TYPE1_INSTRUCTIONS: |
241 | | - src = (instruction & 0xf00) >> 8 |
242 | | - dst = (instruction & 0xf) |
243 | | - elif instr in TYPE2_INSTRUCTIONS: |
244 | | - src = instruction & 0xf |
245 | | - dst = None |
246 | | - else: |
247 | | - src = None |
248 | | - dst = None |
249 | | - |
250 | | - return src, dst |
251 | | - |
252 | 188 | class Operand: |
253 | 189 | def __init__( |
254 | 190 | self, |
|
0 commit comments