private void DoOpenLibFile(string fileName) { ObjectLibrary library = OmfLoader.LoadLibrary(fileName); library.ResolveAllSymbols(); LibraryDisassembler dasm = new LibraryDisassembler(library); dasm.Analyze(); this.program = library; this.procedureList.Program = program; this.errorList.Program = program; this.segmentList.Program = program; // Display all unresolved symbols. foreach (string key in library.GetUnresolvedSymbols()) { System.Diagnostics.Debug.WriteLine(string.Format( "Symbol {0} is unresolved.", key)); } this.libraryBrowser.Library = library; #if false string symbolToFind = "FISRQQ"; foreach (var mod in library.Symbols[symbolToFind]) { System.Diagnostics.Debug.WriteLine(string.Format( "Symbol {0} is defined in module {1}", symbolToFind, mod.Name)); } //library.DuplicateSymbols ObjectModule module = library.FindModule("_ctype"); DefinedSymbol symbol = module.DefinedNames.Find(x => x.Name == "_isupper"); Address entryPoint = new Address( symbol.BaseSegment.Id, (int)symbol.Offset); Disassembler16New dasm = new Disassembler16New(library); dasm.Analyze(entryPoint); this.disassemblyList.SetView(library, symbol.BaseSegment); #endif }
private void btnTest_Click(object sender, EventArgs e) { #if false CallGraphWindow f = new CallGraphWindow(); LinearPointer procEntry = dasm.Image.BaseAddress.LinearAddress + 0x14FE; f.SourceProcedure = dasm.Image.Procedures.Find(procEntry); f.WindowState = FormWindowState.Maximized; f.Show(this); #else string fileName = @"..\..\..\..\Test\SLIBC7.LIB"; ObjectLibrary library = OmfLoader.LoadLibrary(fileName); propertiesWindow.SelectedObject = library; library.ResolveAllSymbols(); libraryWindow.Library = library; libraryWindow.PropertiesWindow = propertiesWindow; libraryWindow.ListingWindow = listingWindow; #endif }