Mercurial > repos > blastem
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] |