private static void add_regs(TreeNode node, Regs.Section sect) { foreach (Regs.Register reg in sect.Reglist) { node.Nodes.Add(reg.Name); node.Nodes[node.Nodes.Count - 1].Tag = reg; } }
static Regs.Section convert_file(string filename) { string spacename = filename; while (spacename.Contains("/")) { spacename = spacename.Substring(spacename.IndexOf("/") + 1, spacename.Length - spacename.IndexOf("/") - 1); } while (spacename.Contains("\\")) { spacename = spacename.Substring(spacename.IndexOf("\\") + 1, spacename.Length - spacename.IndexOf("\\") - 1); } spacename = spacename.Substring(spacename.IndexOf("_") + 1, spacename.IndexOf(".") - spacename.IndexOf("_") - 1); Regs.Section new_space = new Regs.Section(spacename); StreamReader input = new StreamReader(filename); while (!input.EndOfStream) { string line = input.ReadLine(); line = line.Trim(); if (line.StartsWith("constant")) { line = line.Substring(8, line.Length - 8); line = line.Trim(); string name = line.Substring(0, line.IndexOf(" ")); string content = line.Substring(line.IndexOf("(") + 1, line.Length - line.IndexOf("(") - 1); content = content.Substring(0, content.IndexOf(")")); string[] values = content.Split(','); for (int i = 0; i < values.Length; i++) { values[i] = values[i].Trim(); } UInt32[] values_uint = new UInt32[5]; for (int i = 0; i < values_uint.Length; i++) { if (values[i].Contains("+")) { string[] parts = values[i].Split('+'); values_uint[i] = Convert.ToUInt32(parts[0]) + Convert.ToUInt32(parts[1]); } else { values_uint[i] = Convert.ToUInt32(values[i]); } } new_space.Add_Register(name, values_uint[0], values_uint[1], values_uint[2], values_uint[3], values_uint[4], values[5]); } } input.Close(); return(new_space); }