Архитектура учебной универсальной 32-х разрядной машины и практика ее применения
Описание универсальной учебной машины УУМ-32, безопасность исполнения кода и разграничение прав пользователя. Анализ инструментальных средств разработки, требования к программной документации. Тестирование и подготовка руководств пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 26.11.2014 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
private void RunProgram(bool debug = false) {
MDIForm activeChild = (MDIForm)this.ActiveMdiChild;
if (activeChild == null) {
return;
}
int exitCode = this.StartCompilation();
if (exitCode == 0) {
string linkerKey = Enum.GetName(typeof(ExternalApplications), ExternalApplications.Linker);
//exitCode = this.StartProcess(this.externalApplicationInfoCollection[linkerKey].ExeFileName, CLArgsMaskParser.Parse(this.externalApplicationInfoCollection[linkerKey].ArgumentsMask, activeChild.AssociatedFileName));
//this.c_txtOutput.Text += "*** Компоновка ***\r\n";
this.extAppsStdOutput.Enqueue("*** Компоновка ***");
exitCode = this.RunExternalApplication(ExternalApplications.Linker, CLArgsMaskParser.Parse(this.externalApplicationInfoCollection[linkerKey].ArgumentsMask, activeChild.AssociatedFileName), true);
if (exitCode == 0) {
ExternalApplications extApp = (debug)? ExternalApplications.Debugger : ExternalApplications.UUM32;
string key = Enum.GetName(typeof(ExternalApplications), extApp);
//this.StartProcess(this.externalApplicationInfoCollection[uumKey].ExeFileName, CLArgsMaskParser.Parse(this.externalApplicationInfoCollection[uumKey].ArgumentsMask, activeChild.AssociatedFileName));
//this.c_txtOutput.Text += "*** Запуск ***\r\n";
this.extAppsStdOutput.Enqueue("*** Запуск ***");
exitCode = this.RunExternalApplication(extApp, CLArgsMaskParser.Parse(this.externalApplicationInfoCollection[key].ArgumentsMask, activeChild.AssociatedFileName));
if (exitCode == 0) {
this.extAppsStdOutput.Enqueue("Программа успешно отработала.");//this.c_txtOutput.Text += "Программа успешно отработала.";
}
else {
this.extAppsStdOutput.Enqueue("Программа завершила работу некорректно. Код возврата: " + exitCode);//this.c_txtOutput.Text += "Программа завершила работу некорректно.";
}
}
else {
MessageBox.Show(string.Format("Не удалость скомпоновать {0}\nПодробности см. в окне \"Вывод\"", activeChild.ProgramName), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
//-------------------------------------------------------------------------------------------------
private void aboutToolStripMenuItem_Click(object sender, EventArgs e) {
AboutBox about = new AboutBox();
about.ShowDialog();
about.Dispose();
}
private void MainForm_DragEnter(object sender, DragEventArgs e) {
if (!e.Data.GetDataPresent(DataFormats.FileDrop)) {
e.Effect = DragDropEffects.None;
}
else {
e.Effect = DragDropEffects.Copy;
}
}
// данный обработчик обслуживает и главную форму, и дочерние
private void MainForm_DragDrop(object sender, DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
foreach (string fName in (string[])e.Data.GetData(DataFormats.FileDrop)) {
if (Path.HasExtension(fName)) { // чтобы не давать открыть папку // TODO: возможно, было бы неплохо проверять и тип файла
this.OpenFile(fName);
}
}
}
}
private void highlightToolStripMenuItem_Click(object sender, EventArgs e) {
FontStyleSettingsForm fontStyler = new FontStyleSettingsForm();
fontStyler.BaseFont = (Font)this.childStyleSettings.BaseFont.Clone();
fontStyler.StylesEnabled = this.childStyleSettings.FontStylesEnabled;
fontStyler.StandartElementsFontStyles =
Misc.TemplateMethods<FontStyleSettingsForm.TextElementStyle>.GetCloneableListCopy(
this.childStyleSettings.StandartElementsFontStyles
);
fontStyler.KeywordsFontStyles =
Misc.TemplateMethods<FontStyleSettingsForm.TextElementStyle>.GetCloneableListCopy(
this.childStyleSettings.KeywordsFontStyles
);
fontStyler.BackgroundColor = this.childStyleSettings.BackgroundColor;
fontStyler.RunAsmBeforeShellStart = this.childStyleSettings.RunAsmBeforeShellStart;
fontStyler.AsmCommandLineArgument = this.childStyleSettings.AsmCommandlineArgument;
fontStyler.IsRelativePaths = this.allPathsAreRelative;
fontStyler.KeywordsFileName = GetAbsolutePathFromCurrent(this.childStyleSettings.KeywordsFileName);
if (fontStyler.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
this.childStyleSettings.BaseFont = fontStyler.BaseFont;
this.childStyleSettings.FontStylesEnabled = fontStyler.StylesEnabled;
this.childStyleSettings.StandartElementsFontStyles = fontStyler.StandartElementsFontStyles;
this.childStyleSettings.KeywordsFontStyles = fontStyler.KeywordsFontStyles;
this.childStyleSettings.BackgroundColor = fontStyler.BackgroundColor;
this.childStyleSettings.RunAsmBeforeShellStart = fontStyler.RunAsmBeforeShellStart;
this.childStyleSettings.AsmCommandlineArgument = fontStyler.AsmCommandLineArgument;
this.childStyleSettings.KeywordsFileName = GetCurrentPathFromAbsolute(fontStyler.KeywordsFileName);
this.applyChildrenSettings();
}
fontStyler.Dispose();
}
private void externalAppsSettingsToolStripMenuItem_Click(object sender, EventArgs e) {
ExternalAppsSettingsForm extAppsConfigurator = new ExternalAppsSettingsForm(this.allPathsAreRelative);
ExternalApplications[] externalApplications = (ExternalApplications[])Enum.GetValues(typeof(ExternalApplications));
foreach (ExternalApplications extApp in externalApplications) {
string key = Enum.GetName(typeof(ExternalApplications), extApp);
string exe = this.GetAbsolutePathFromCurrent(this.externalApplicationInfoCollection[key].ExeFileName);
extAppsConfigurator.SetApplicationName(extApp, exe);
extAppsConfigurator.SetArgumentsMask(extApp, this.externalApplicationInfoCollection[key].ArgumentsMask);
}
if (extAppsConfigurator.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
this.allPathsAreRelative = extAppsConfigurator.UseRelativePaths;
foreach (ExternalApplications extApp in externalApplications) {
string key = Enum.GetName(typeof(ExternalApplications), extApp);
string exe = GetCurrentPathFromAbsolute(extAppsConfigurator.GetApplicationName(extApp));
this.externalApplicationInfoCollection[key] = new ExternalApplicationInfo(exe, extAppsConfigurator.GetArgumentsMask(extApp));
}
this.SaveSettingsToXML();
}
extAppsConfigurator.Dispose();
}
privte void linesNumerationToolStripMenuItem_Click(object sender, EventArgs e) {
LineNumerationSettingsForm numerationEditor = new LineNumerationSettingsForm(this.ChildNumerationSettings);
if (numerationEditor.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
this.ChildNumerationSettings = new MDIForm.NumerationSetting(numerationEditor.NumerationNeed, numerationEditor.NumeratorForeColor, numerationEditor.NumeratorBackColor);
}
numerationEditor.Dispose();
}
private void c_txtOutput_TextChanged(object sender, EventArgs e) {
c_lblFocusCatcher.Focus();
c_txtOutput.SelectionStart = c_txtOutput.TextLength;
c_txtOutput.ScrollToCaret();
c_txtOutput.Refresh();
}
private void c_txtOutput_DoubleClick(object sender, EventArgs e) {
int curLine = c_txtOutput.GetLineFromCharIndex(c_txtOutput.GetFirstCharIndexOfCurrentLine());
string line = c_txtOutput.Lines[curLine].Trim().ToLower();
if (line.StartsWith("строка")) { // TODO: убрать константу, синхронизовать с ассемблером, т.к. сообщения формирует он
line = line.Replace("строка", "").Trim();
int ddot = line.IndexOf(':');
int lineNum = int.Parse(line.Substring(0, ddot)) - 1;
((MDIForm)this.ActiveMdiChild).JumpToLine(lineNum);
}
}
private void clearTxtOutToolStripMenuItem_Click(object sender, EventArgs e) {
this.c_txtOutput.Clear();
}
private void c_tmrExtAppsStdOutputDequeuer_Tick(object sender, EventArgs e) {
while (this.extAppsStdOutput.Count != 0) {
this.c_txtOutput.Text += this.extAppsStdOutput.Dequeue() + Environment.NewLine;
}
XmlDocument doc = new XmlDocument();
while (this.extAppsStdError.Count != 0) {
string text = this.extAppsStdError.Dequeue();
if (text != null) {
try {
doc.LoadXml(text);
XmlElement el = doc.DocumentElement;
this.errorsDataGridView.Rows.Add();
DataGridViewRow row = this.errorsDataGridView.Rows[this.errorsDataGridView.Rows.Count - 1];
row.Cells["ColumnFileName"].Value = el.Attributes["file"].Value;
row.Cells["ColumnLineNumber"].Value = el.Attributes["line"].Value;
row.Cells["ColumnErrorDescription"].Value = el.Attributes["description"].Value;
}
catch { }
}
}
}
private void errorsDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) {
try {
DataGridViewRow row = this.errorsDataGridView.Rows[e.RowIndex];
string fileName = (string)row.Cells["ColumnFileName"].Value;
if (!string.IsNullOrEmpty(fileName)) {
MDIForm mdi = this.OpenFile(fileName);
string line = (string)row.Cells["ColumnLineNumber"].Value;
if (!string.IsNullOrEmpty(line)) {
int l = int.Parse(line) - 1;
mdi.JumpToLine(l);
}
}
}
catch { }
}
}
}
Размещено на Allbest.ru
Подобные документы
Особенности разработки кода программного модуля на современных языках программирования. Отладка и тестирование программы, оформление документации на программные средства. Применение инструментальных средств для автоматизации оформления документации.
отчет по практике [203,8 K], добавлен 12.04.2015Обоснование выбора метода проектирования и инструментальных средств для разработки программного средства и базы данных. Требования к эргономике и технической эстетике. Разработка алгоритмов приложения. Руководство пользователя. Безопасность труда.
дипломная работа [2,9 M], добавлен 17.10.2014Цели универсальной системы хранения данных о производственном изделии. Описание предметной области программы и технические требования к ней. Стадии и этапы разработки, методика испытаний. Работа с главным меню и справочниками, руководство оператора.
дипломная работа [4,6 M], добавлен 27.08.2012Понятие и содержание экспертных систем, принципы взаимосвязи элементов: интерфейса пользователя, собственно пользователя, эксперта, средств объяснения, рабочей памяти и машины логического вывода. Классификация, преимущества, недостатки экспертных систем.
реферат [33,9 K], добавлен 25.02.2013Последовательность разработки приложения, автоматизирующего технологию организации повышения квалификации. Архитектура создаваемого приложения. Разработка модели данных. Разграничение прав доступа. Инструкция пользователя. Оценка капитальных затрат.
дипломная работа [4,0 M], добавлен 27.07.2013Актуальность создания фирменного web-сайта. Разработка, внедрение web-сайта под названием "Удачная постройка". Анализ существующих программных решений, выбор инструментальных средств разработки. Архитектура сайта, структура данных. Тестирование и отладка.
дипломная работа [4,7 M], добавлен 19.01.2017Архитектура виртуальной машины, абстракция и виртуализация. Обзор технологии виртуальной машины, ее преимущества и недостатки. Возможности VirtualBox по работе с виртуальными жесткими дисками. Установка Windows 8 в VirtualВox, главное окно программы.
курсовая работа [3,7 M], добавлен 22.03.2014Разработка основных проектных решений и подготовка технической документации в ходе проектирования автоматической информационной системы магазина бытовой техники. Выбор инструментальных средств, задачи, интерфейс программы, диалог пользователя с системой.
курсовая работа [997,7 K], добавлен 27.10.2013Структуры вычислительных машин и систем. Фон-неймановская архитектура, перспективные направления исследований. Аналоговые вычислительные машины: наличие и функциональные возможности программного обеспечения. Совокупность свойств систем для пользователя.
курсовая работа [797,5 K], добавлен 05.11.2011Описание входной и выходной информации. Требования к комплексу технических средств и к интерфейсу конечного пользователя. Разработка форм представления входных и выходных данных. Проектирование программных модулей. Руководство пользователя и программиста.
курсовая работа [421,6 K], добавлен 27.06.2015