Mercurial > repos > blastem
comparison cpu_dsl.py @ 1725:89ee53a149ea
Miscellaneous small fixes to new Z80 core
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 01 Feb 2019 22:16:56 -0800 |
parents | b757ebc59851 |
children | b0e01e64d76d |
comparison
equal
deleted
inserted
replaced
1724:9a74c2d05672 | 1725:89ee53a149ea |
---|---|
256 ) | 256 ) |
257 self.impls['c'] = _impl | 257 self.impls['c'] = _impl |
258 self.outOp = (2,) | 258 self.outOp = (2,) |
259 return self | 259 return self |
260 def cUnaryOperator(self, op): | 260 def cUnaryOperator(self, op): |
261 def _impl(prog, params): | 261 def _impl(prog, params, rawParams, flagUpdates): |
262 return '\n\t{dst} = {op}{a};'.format( | 262 dst = params[1] |
263 dst = params[1], a = params[0], op = op | 263 decl = '' |
264 if op == '-': | |
265 if flagUpdates: | |
266 for flag in flagUpdates: | |
267 calc = prog.flags.flagCalc[flag] | |
268 if calc == 'carry': | |
269 needsCarry = True | |
270 elif calc == 'half-carry': | |
271 needsHalf = True | |
272 elif calc == 'overflow': | |
273 needsOflow = True | |
274 if needsCarry or needsOflow or needsHalf: | |
275 size = prog.paramSize(rawParams[1]) | |
276 if needsCarry: | |
277 size *= 2 | |
278 decl,name = prog.getTemp(size) | |
279 dst = prog.carryFlowDst = name | |
280 prog.lastA = 0 | |
281 prog.lastB = params[0] | |
282 prog.lastBFlow = params[0] | |
283 return decl + '\n\t{dst} = {op}{a};'.format( | |
284 dst = dst, a = params[0], op = op | |
264 ) | 285 ) |
265 self.impls['c'] = _impl | 286 self.impls['c'] = _impl |
266 self.outOp = (1,) | 287 self.outOp = (1,) |
267 return self | 288 return self |
268 def addImplementation(self, lang, outOp, impl): | 289 def addImplementation(self, lang, outOp, impl): |