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):