MIPS/tools/ctrl2_maker.py

41 lines
1.3 KiB
Python
Raw Normal View History

from curses.ascii import isdigit
from zeroconf import instance_name_from_service_info
file_list = [('ectrl.txt', '.ECtrl'),
('exc.txt', ''),
('global.txt', ''),
('mctrl0.txt', '.MCtrl0'),
('mctrl1.txt', '.MCtrl1'),
('pcs.txt', ''),
('privilege.txt', ''),
('trap.txt', '.Trap'),
('wctrl.txt', '.WCtrl')]
mp = {}
inst_name = {}
for fi, subname in file_list:
with open(fi) as f:
lines = f.readlines()
title = lines[0].split()
items = [item.split() for item in lines[1:]]
for item in items:
for i in range(1, len(title)):
if title[i][-1].isdigit() and title[i] not in ['RS0', 'DP0', 'DP1']:
continue
if item[i] == '?':
continue
inst = item[0]
inst_name[inst] = ' '.join(item[len(title)+1:])
signal_name = 'ctrl' + subname + '.' + title[i]
if inst not in mp:
mp[inst] = [(signal_name, item[i])]
else:
mp[inst].append((signal_name, item[i]))
for inst in mp:
print(f'case {inst}: begin /* {inst_name[inst]} */')
for sig in mp[inst]:
print(f' {sig[0]} = {sig[1]}')
print('end')