示例#1
0
        private void btnExportAssembly_Click(object sender, EventArgs e)
        {
            string disassembly;

            if (!m_Disassembler.Disassemble(m_DisassemblyProject.DataStartAddress, m_DisassemblyProject.JumpedAtAddresses, m_DisassemblyProject.NamedLabels, false, out disassembly))
            {
                return;
            }

            string newFilename = "disassembly.asm";

            try
            {
                newFilename = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(m_OpenedFilename), System.IO.Path.GetFileNameWithoutExtension(m_OpenedFilename)) + ".asm";
            }
            catch (Exception)
            {
                newFilename = "disassembly.asm";
            }

            if (m_Core.MainForm.m_Solution != null)
            {
                while (m_Core.MainForm.m_Solution.FilenameUsed(newFilename))
                {
                    newFilename = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(m_OpenedFilename), System.IO.Path.GetFileNameWithoutExtension(m_OpenedFilename)) + "1.asm";
                }
            }
            SourceASMEx document = new SourceASMEx(m_Core);

            document.ShowHint = WeifenLuo.WinFormsUI.Docking.DockState.Document;
            document.Core     = m_Core;
            document.Text     = System.IO.Path.GetFileName(newFilename);
            document.FillContent(disassembly);
            document.Show(m_Core.MainForm.panelMain);
        }
示例#2
0
        public void SetASMFileInfo(Types.ASM.FileInfo FileInfo, List <Types.AutoCompleteItemInfo> KnownTokenList, GR.Collections.MultiMap <string, SymbolInfo> KnownTokenInfo)
        {
            SourceASMEx asm = null;

            if ((BaseDoc != null) &&
                (Type == ProjectElement.ElementType.ASM_SOURCE))
            {
                asm = BaseDoc as SourceASMEx;
            }
            if (asm != null)
            {
                asm.DoNotFollowZoneSelectors = true;

                asm.SetLineInfos(FileInfo);
            }

            ASMFileInfo = FileInfo;

            KnownKeywords = KnownTokenList;
            KnownTokens   = KnownTokenInfo;
            if (BaseDoc != null)
            {
                BaseDoc.Core.MainForm.AddTask(new Tasks.TaskUpdateKeywords(BaseDoc));
            }

            if (Element != null)
            {
                // and to all it's deduced dependencies!
                foreach (var dependencyBuildState in DeducedDependency.Values)
                {
                    foreach (var dependency in dependencyBuildState.BuildState.Keys)
                    {
                        ProjectElement element = Project.GetElementByFilename(dependency);
                        if ((element != null) &&
                            (element.DocumentInfo.Type == ProjectElement.ElementType.ASM_SOURCE))
                        {
                            element.DocumentInfo.SetASMFileInfo(FileInfo, KnownTokenList, KnownTokenInfo);
                        }
                    }
                }
            }
            if (asm != null)
            {
                asm.DoNotFollowZoneSelectors = false;
            }
        }