Читаем Системное программное обеспечение. Лабораторный практикум полностью

Надо отметить, что эта оптимизация меньше зависит от целевой вычислительной системы (поскольку практически во всех типах процессоров есть команды, увеличивающие или уменьшающие значение регистра на 1) и совсем не зависит от результирующего языка.

Машинно-зависимые методы оптимизации выполняются компилятором на этапе порождения результирующей программы. Причем функции генерации кода, упомянутые выше, сочетают в себе машинно-зависимую и машинно-независимую оптимизацию.

<p>Текст программы компилятора</p>

Полный текст всех модулей компилятора, созданного при реализации примера выполнения курсовой работы, приведен в Приложении 3. Те из этих модулей, которые не зависят от входного языка, были использованы ранее при выполнении лабораторных работ № 1–4. Кроме того, модули можно найти в архиве, располагающемся на веб-сайте издательства, в подкаталогах CURSOV и COMMON.

Все функциональные модули и их назначение в работе были рассмотрены выше.

Организация интерфейса с пользователем

По заданию компилятор должен получать входные данные из командной строки (обработка командной строки описана далее). Дополнительно для созданного компилятора реализован графический интерфейс с пользователем, аналогичный интерфейсу, использованному в лабораторных работах № 2–4. Окно графического интерфейса открывается в том случае, когда командная строка не указана.

Модуль, обеспечивающий интерфейс с пользователем (FormLab4), реализует графическое окно TCursovForm на основе класса TForm библиотеки VCL. Он обеспечивает интерфейс средствами Graphical User Interface (GUI) в ОС типа Windows на основе стандартных органов управления из системных библиотек данной ОС. Этот модуль обеспечивает также обработку входной командной строки компилятора и включает в себя две составляющие:

• файл программного кода (файл FormLab4.pas);

• файл описания ресурсов пользовательского интерфейса (файл FormLab4.dfm).

Более подробно принципы организации пользовательского интерфейса на основе GUI и работа систем программирования с ресурсами интерфейса описаны в [3, 5–7]. Полный текст программного кода модуля интерфейса с пользователем приведен в листинге П3.14 в приложении 3. Описание ресурсов пользовательского интерфейса, связанное с этим модулем, можно найти в архиве, располагающемся на веб-сайте издательства, в файле FormLab4.dfm в подкаталоге CURSOV.

Модуль FormLab4 построен на основе такого же модуля, который использовался для реализации интерфейса с пользователем в лабораторной работе № 4. Он содержит все данные, управляющие и интерфейсные элементы, которые были использованы в лабораторных работах № 2–4. Такой подход оправдан, поскольку этапы компиляции при выполнении курсовой работы совпадают с этапами выполнения соответствующих лабораторных работ.

Кроме органов управления, использованных в лабораторных работах № 2–4, интерфейсная форма, описанная в модуле FormLab4, содержит органы управления для генератора ассемблерного кода, которые созданы для курсовой работы:

• в многостраничной вкладке (PageControl1) появилась новая закладка (SheetAsm) под названием «Команды»;

• на закладке SheetAsm расположены интерфейсные элементы: ListAsm – список для вывода и просмотра порожденных ассемблерных команд;

• на первой закладке SheetFile («Исходный файл») появился дополнительный орган управления – флажок с двумя состояниями («пусто» или «отмечено»): CheckAsm – при включении этого флажка выполняется оптимизация результирующего кода, а при отключении – не выполняется.

Внешний вид новой закладки интерфейсной формы TCursovForm приведен на рис. 5.4.

Рис. 5.4. Внешний вид пятой закладки интерфейсной формы для курсовой работы.

Обработка входного файла в курсовой работе происходит в той же последовательности и в том же порядке, как это было описано при выполнении лабораторной работы № 4. Последним этапом, который отсутствовал в лабораторной работе, является этап порождения результирующего кода. На этом этапе выполняется следующая последовательность действий:

• вызывается функция MakeRegisters (модуль TrdAsm – листинг П3.13, приложение 3), которая распределяет регистры процессора по списку триад, результатом выполнения функции является количество необходимых временных переменных для списка триад (если регистров процессора не хватило), это значение запоминается;

• очищается содержимое списка ассемблерных команд ListAsm;

• в список ассемблерных команд записываются строки заголовка программы в соответствии с заданием;

• запоминается перечень всех идентификаторов программы (с помощью функции IdentList из модуля FncTree – листинг П3.2, приложение 3);

• если перечень идентификаторов не пустой, то:

– в список строк записывается ключевое слово маг;

– в список строк записываются все идентификаторы через запятую с указанием требуемого типа данных (integer);

• в список ассемблерных команд записываются строки заголовка функции CompileTest в соответствии с заданием;

• если количество необходимых временных переменных больше нуля, то:

– в список строк в тело функции помещается ключевое слово маг;

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры