Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }