internal static List <AssemblyLine> ProcessDisassembly(string disassembly) { var assemblyData = new List <AssemblyLine>(); var disassemblyLines = disassembly.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); foreach (var line in disassemblyLines) { var parts = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length < 3) { Console.WriteLine("Unexpected line: " + line); continue; } var address = Convert.ToUInt32(parts[0], 16); var rawData = parts[1]; var textStart = line.IndexOf(parts[2]); var text = line.Substring(textStart); // Test our error checking!!! //if (rawData == "53") // text = "push blah"; String instruction = null, parameters = null; var firstSpace = text.IndexOf(' '); if (firstSpace != -1) { instruction = text.Substring(0, firstSpace); parameters = text.Substring(firstSpace, text.Length - firstSpace); } var newData = new AssemblyLine { Address = address, RawData = rawData, Text = text, Instruction = instruction, Parameters = parameters }; Console.WriteLine(newData); assemblyData.Add(newData); } int lineNum = 0; foreach (var line in disassemblyLines) { var other = assemblyData[lineNum]; if (other.ToNasmString() != line) { Console.WriteLine("Error on line {0}\nExpected:{1}\n Got:{2}", lineNum, line, other.ToString()); } lineNum++; } return(assemblyData); }
internal static List<AssemblyLine> ProcessDisassembly(string disassembly) { var assemblyData = new List<AssemblyLine>(); var disassemblyLines = disassembly.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); foreach (var line in disassemblyLines) { var parts = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length < 3) { Console.WriteLine("Unexpected line: " + line); continue; } var address = Convert.ToUInt32(parts[0], 16); var rawData = parts[1]; var textStart = line.IndexOf(parts[2]); var text = line.Substring(textStart); // Test our error checking!!! //if (rawData == "53") // text = "push blah"; var newData = new AssemblyLine { Address = address, RawData = rawData, Text = text }; Console.WriteLine(newData); assemblyData.Add(newData); } int lineNum = 0; foreach (var line in disassemblyLines) { var other = assemblyData[lineNum]; if (other.ToString() != line) Console.WriteLine("Error on line {0}\nExpected:{1}\n Got:{2}", lineNum, line, other.ToString()); lineNum++; } return assemblyData; }