Mercurial > repos > blastem
comparison cpu_dsl.py @ 1703:49a52c737bf0
Fix zero flag calculation in CPU DSL
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 28 Jan 2019 19:24:04 -0800 |
parents | 73ac2e59fa3f |
children | 89932fd29abd |
comparison
equal
deleted
inserted
replaced
1702:73ac2e59fa3f | 1703:49a52c737bf0 |
---|---|
322 reg,storageBit = storage | 322 reg,storageBit = storage |
323 reg = prog.resolveParam(reg, None, {}) | 323 reg = prog.resolveParam(reg, None, {}) |
324 output.append('\n\t{reg} = {res} ? ({reg} & {mask}U) : ({reg} | {bit}U);'.format( | 324 output.append('\n\t{reg} = {res} ? ({reg} & {mask}U) : ({reg} | {bit}U);'.format( |
325 reg = reg, mask = ~(1 << storageBit), res = lastDst, bit = 1 << storageBit | 325 reg = reg, mask = ~(1 << storageBit), res = lastDst, bit = 1 << storageBit |
326 )) | 326 )) |
327 elif prog.paramSize(prog.lastDst) > prog.paramSize(storage): | 327 else: |
328 reg = prog.resolveParam(storage, None, {}) | 328 reg = prog.resolveParam(storage, None, {}) |
329 output.append('\n\t{reg} = {res} != 0;'.format( | 329 output.append('\n\t{reg} = {res} == 0;'.format( |
330 reg = reg, res = lastDst | 330 reg = reg, res = lastDst |
331 )) | 331 )) |
332 else: | |
333 reg = prog.resolveParam(storage, None, {}) | |
334 output.append('\n\t{reg} = {res};'.format(reg = reg, res = lastDst)) | |
335 elif calc == 'half-carry': | 332 elif calc == 'half-carry': |
336 pass | 333 pass |
337 elif calc == 'carry': | 334 elif calc == 'carry': |
338 pass | 335 pass |
339 elif calc == 'overflow': | 336 elif calc == 'overflow': |
976 hFile.write('\n\t{0}options *opts;'.format(self.prefix)) | 973 hFile.write('\n\t{0}options *opts;'.format(self.prefix)) |
977 hFile.write('\n\tuint32_t cycles;') | 974 hFile.write('\n\tuint32_t cycles;') |
978 self.regs.writeHeader(otype, hFile) | 975 self.regs.writeHeader(otype, hFile) |
979 hFile.write('\n}} {0}context;'.format(self.prefix)) | 976 hFile.write('\n}} {0}context;'.format(self.prefix)) |
980 hFile.write('\n') | 977 hFile.write('\n') |
978 hFile.write('\nvoid {pre}execute({type} *context, uint32_t target_cycle);'.format(pre = self.prefix, type = self.context_type)) | |
981 hFile.write('\n#endif //{0}_'.format(macro)) | 979 hFile.write('\n#endif //{0}_'.format(macro)) |
982 hFile.write('\n') | 980 hFile.write('\n') |
983 hFile.close() | 981 hFile.close() |
984 | 982 |
985 def _buildTable(self, otype, table, body): | 983 def _buildTable(self, otype, table, body): |