All pastes #1250164 Raw Edit

Someone

public python v1 · immutable
#1250164 ·published 2008-11-10 09:13 UTC
rendered paste body
#!/usr/bin/env pythonimport reimport sysregfile = sys.argv[1]f = open(regfile, "r")regexp = re.compile("#define[\s]+([0-9A-Z_]+)[\s]+0x([0-9a-fA-F]{4})")regs = {}for line in f.readlines():	m = regexp.match(line)	if m:		name, reg = m.groups()		regs[int(reg, 16)] = nameparser = """\#!/usr/bin/env python# This was magically created by gen_parser.py using %s for registersimport sysregs = {""" % regfilekeys = regs.keys()keys.sort()longestreg = 0for key in keys:	parser += "%s: \"%s\",\n" % (key, regs[key])	if len(regs[key]) > longestreg:		longestreg = len(regs[key])parser += """\}def itostr(index):	try:		return regs[index]	except KeyError:		return "0x%%4x" %% indexf = open(sys.argv[1], "r")line = f.readline()while line:	data = int(line,16)	ptype = data >> 30	if ptype == 0:		# cmdpacket0		index = (data & 0x1FFF) << 2		count = ((data >> 16) & 0xFFFF) + 1		print "cmdpacket0, index %%s, count %%d" %% (itostr(index), count)		while count:			count -= 1			value = int(f.readline(), 16)			print "%%%ds <- 0x%%08x" %% (itostr(index), value)			if not (data & (1 << 15)):				index += 0x4		print ""	elif ptype == 2:		# cmdpacket2		print "cmdpacket2"	line = f.readline()""" % longestregprint parser