SharpDisasm.Disassembler.Disassemble C# (CSharp) Method

Disassemble() public method

Disassemble instructions and yield the result. Breaking out of the enumerator will prevent further instructions being disassembled.
public Disassemble ( ) : IEnumerable
return IEnumerable
        public IEnumerable<Instruction> Disassemble()
        {
            Reset();
            Instruction instruction = null;
            while ((instruction = NextInstruction()) != null)
            {
                yield return instruction;
            }
        }

Usage Example

Example #1
0
        private static int Main(string[] args)
        {
            Console.WriteLine();
            Console.WriteLine("Mosa.Tool.Disassembler.Intel.Disassembler [www.mosa-project.org]");
            Console.WriteLine("Copyright 2016. New BSD License.");
            Console.WriteLine("Written by Phil Garcia ([email protected])");
            Console.WriteLine();

            if (args.Length < 2)
            {
                Console.WriteLine("Usage: Disassembler -offset <offset> -address <address> -o <output file> <source file>");
                Console.Error.WriteLine("ERROR: Missing arguments");
                return -1;
            }

            try
            {
                var options = new Options();
                options.LoadArguments(args);

                // Need a new instance of translator every time as they aren't thread safe
                var translator = new IntelTranslator();

                // Configure the translator to output instruction addresses and instruction binary as hex
                translator.IncludeAddress = true;
                translator.IncludeBinary = true;

                var code2 = File.ReadAllBytes(options.InputFile);

                var code = new byte[code2.Length];

                for (ulong i = options.FileOffset; i < (ulong)code2.Length; i++)
                {
                    code[i - options.FileOffset] = code2[i];
                }

                //using (var disasm = new SharpDisasm.Disassembler(code, ArchitectureMode.x86_32, options.StartingAddress, true, Vendor.Any, options.FileOffset))
                using (var disasm = new SharpDisasm.Disassembler(code, ArchitectureMode.x86_32, options.StartingAddress, true, Vendor.Any))
                {
                    using (var dest = File.CreateText(options.OutputFile))
                    {
                        foreach (var instruction in disasm.Disassemble())
                        {
                            var inst = translator.Translate(instruction);
                            dest.WriteLine(inst);

                            if (options.Length != 0 && instruction.PC > options.StartingAddress + options.Length)
                                break;
                        }
                    }
                }

                return 0;
            }
            catch (Exception e)
            {
                Console.Error.WriteLine("Exception: {0}", e.ToString());
                return -1;
            }
        }
All Usage Examples Of SharpDisasm.Disassembler::Disassemble