예제 #1
0
        private List <InstructionLine> FetchRange(int startIndex, int pageCount)
        {
            List <InstructionLine> result = null;

            var task = debugger.DisassembleAsync(BaseAddress + (ulong)startIndex, (uint)pageCount);

            task.Wait();

            var instructions = task.Result;

            if (instructions != null)
            {
                result = new List <InstructionLine>();

                for (uint i = 0; i < pageCount; i++)
                {
                    var address = (uint)startIndex + i;

                    var instruction = instructions.Where(inst => inst.Address == address);

                    if (instruction.Count() == 0)
                    {
                        result.Add(new InstructionLine {
                            Visible = false
                        });
                    }
                    else
                    {
                        result.Add(instruction.First());
                    }
                }
            }

            return(result);
        }