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

0 – оптимизация не выполняется (флаг выключен), любой другой символ, следующий за символом S, воспринимается как 0;

• 0 – имя результирующего файла, непосредственно за символом должно идти имя файла и путь к нему (если путь не указан, считается, что файл будет находиться в текущем каталоге, откуда запущен компилятор);

• Е – имя файла с ошибками, непосредственно за символом должно идти имя файла и путь к нему (если путь не указан, считается, что файл будет находиться в текущем каталоге, откуда запущен компилятор).

Если какой-то из ключей не указан, то компилятор принимает значение ключа по умолчанию. Для флагов установлены следующие значения по умолчанию:

• флаг оптимизации команд ассемблера – включен;

• флаг свертки объектного кода – включен;

• флаг исключения лишних операций – включен.

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

Анализ параметров командной строки запуска компилятора реализован в функции ProcessParams (модуль FormLab4, листинг П3.14 в приложении 3).

Например, командная строка:

cursov.exe myfile.txt

запустит на выполнение компилятор (cursov. ехе) для обработки файла myfi 1 е. txt. При успешной компиляции результирующая программа будет записана в файл myfi 1 е. asm, а ошибки, если они будут обнаружены, – в файл myfile.err. При этом компилятор будет выполнять все виды оптимизации (оптимизацию методом свертки объектного кода, оптимизацию методом исключения лишних операций и оптимизацию результирующего ассемблерного кода), поскольку ни один ключ не указан и все флаги будут установлены по умолчанию.

Командная строка:

cursov.exe infile.txt – Ooutfile.asm – Eerrfile.txt – A0 – S0

запустит на выполнение компилятор (cursov.exe) для обработки файла infile.txt. При успешной компиляции результирующая программа будет записана в файл outfile.asm, а ошибки, если они будут обнаружены, – в файл errfile.txt. При этом компилятор будет выполнять только оптимизацию методом свертки объектного кода, поскольку два ключа (-АО и – SO) отключают два других метода оптимизации.

Информацию в файл ошибок компилятор всегда дописывает в конец файла, и только если такого файла нет, он создается заново. Дата и командная строка запуска компилятора всегда записываются в файл ошибок. Поэтому в том случае, когда компиляция выполнена успешно, в файл ошибок помещаются только две строки – командная строка и время запуска компилятора. В остальных случаях там будет присутствовать и информация об ошибке (построенный компилятор умеет обнаруживать только одну ошибку – ту, которая первой встретится ему в исходном тексте входной программы).

Файл с результирующей программой всегда создается заново. Если такой файл уже существовал в момент запуска компилятора, то он будет уничтожен.

Пример входной программы и результирующей программы

Для иллюстрации работы созданного компилятора взяты два примера входной программы:

1. Программа, вычисляющая факториал числа.

2. Программа, на примере которой можно иллюстрировать работу оптимизирующих алгоритмов.

Оба примера приведены в приложении 4.

Первый пример вычисляет факториал входной величины, причем если величина отрицательная или превышает 31, то программа возвращает 0. Умножение реализовано через цикл операций сложения. Входной файл приведен в листинге П4.1, а полученный результирующий файл – в листинге П4.2, приложение 4.

Второй пример содержит почти бессмысленную программу, которая всегда возвращает значение, равное 0, но на примере этой программы можно хорошо проиллюстрировать работу оптимизирующих алгоритмов. Входной файл приведен в листинге П4.3, в листинге П4.4 приведен результирующий файл, полученный без применения оптимизации, а в листинге П4.5 – файл, полученный с применением оптимизации. Желающие могут сравнить ассемблерный код этих двух файлов и проверить эффективность используемых алгоритмов оптимизации.[12]

<p>Выводы по проделанной работе</p>

В результате выполнения курсовой работы для заданного входного языка построен компилятор, порождающий результирующий код на языке ассемблера для процессоров типа Intel 80386 и более поздних модификаций. Компилятор может работать с командной строкой, а при ее отсутствии предоставляет пользователю графический интерфейс, позволяющий указать входной файл и условия работы компилятора.

Построенный компилятор обнаруживает все синтаксические ошибки языка, а также семантические ошибки:

• присваивание значений константам (когда первый операнд в операторе присваивания – константа);

• присваивание значений предопределенной входной переменной InpVar;

• использование предопределенной переменной Result.

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

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

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

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

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

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

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

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

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