comparison cpu_dsl.py @ 1621:ca158bc091f9

Implement program ROM reads
author Michael Pavone <pavone@retrodev.com>
date Sat, 06 Oct 2018 17:33:15 -0700
parents a172f97d873f
children 44d8c6e61ad4
comparison
equal deleted inserted replaced
1620:a172f97d873f 1621:ca158bc091f9
674 return ''.join(lines) 674 return ''.join(lines)
675 675
676 class Registers: 676 class Registers:
677 def __init__(self): 677 def __init__(self):
678 self.regs = {} 678 self.regs = {}
679 self.pointers = {}
679 self.regArrays = {} 680 self.regArrays = {}
680 self.regToArray = {} 681 self.regToArray = {}
681 682
682 def addReg(self, name, size): 683 def addReg(self, name, size):
683 self.regs[name] = size 684 self.regs[name] = size
685
686 def addPointer(self, name, size):
687 self.pointers[name] = size
684 688
685 def addRegArray(self, name, size, regs): 689 def addRegArray(self, name, size, regs):
686 self.regArrays[name] = (size, regs) 690 self.regArrays[name] = (size, regs)
687 idx = 0 691 idx = 0
688 if not type(regs) is int: 692 if not type(regs) is int:
719 if len(parts) == 3: 723 if len(parts) == 3:
720 self.addRegArray(parts[0], int(parts[1]), int(parts[2])) 724 self.addRegArray(parts[0], int(parts[1]), int(parts[2]))
721 elif len(parts) > 2: 725 elif len(parts) > 2:
722 self.addRegArray(parts[0], int(parts[1]), parts[2:]) 726 self.addRegArray(parts[0], int(parts[1]), parts[2:])
723 else: 727 else:
724 self.addReg(parts[0], int(parts[1])) 728 if parts[1].startswith('ptr'):
729 self.addPointer(parts[0], int(parts[1][3:]))
730 else:
731 self.addReg(parts[0], int(parts[1]))
725 return self 732 return self
726 733
727 def writeHeader(self, otype, hFile): 734 def writeHeader(self, otype, hFile):
728 fieldList = [] 735 fieldList = []
736 for pointer in self.pointers:
737 hFile.write('\n\tuint{sz}_t *{nm};'.format(nm=pointer, sz=self.pointers[pointer]))
729 for reg in self.regs: 738 for reg in self.regs:
730 if not self.isRegArrayMember(reg): 739 if not self.isRegArrayMember(reg):
731 fieldList.append((self.regs[reg], 1, reg)) 740 fieldList.append((self.regs[reg], 1, reg))
732 for arr in self.regArrays: 741 for arr in self.regArrays:
733 size,regs = self.regArrays[arr] 742 size,regs = self.regArrays[arr]