E. Интерфейс с операционной системой. Создание программ на языке ассемблера для ОС Windows
Консольные Win32 приложения работают в защищённом режиме;
Эмулируют MS-DOS
Стандартный текстовый ввод-вывод
Опция /SUBSISTEM:CONSOLE
Буфер ввода:console input buffer
Буфер экрана:console screen buffer
Функции работы с консолью:
Текст(высокий уровень):
Читать символ из буфера ввода
Вывести символ на экран
Перенаправление ввода-вывода
События(низкий уровень):
Получить событие от мыши или клавиатуры
Определение действий пользователя
Направление позиции,размера и цвета окна
API и SDK:
API (Application Programming interface): набор типов, констант, функций, пре доставляемых для программирования
SDK (Software development Kit): API, набор утилит, библиотек, примеров, документаций
Платформа: архитектура, ОС, ЯП , библиотеки времени выполнения
Дескриптор консоли содержит функции работы с файлами, функции управления окном консоли, также функции управления датой и времени.
F. Модель анализа-синтеза компиляции. Лексический анализ. Синтаксический анализ. Семантический анализ. Фазы компилятора. Инструментарий для создания компиляторов.
Фазы компиляции
Процесс создания компилятора можно свести к решению нескольких задач, которые принято называть фазами компиляции (compilation phases). Обычно компилятор состоит из следующих фаз:
· лексический анализ
· синтаксический анализ
· семантический анализ
· оптимизация
· генерация кода.
Лексический анализ
Входом компилятора служит программа на исходном языке программирования. С точки зрения компилятора это просто последовательность символов. Задача первой фазы компиляции, лексического анализатора (lexical analysis), заключается в разборе входной цепочки и выделении некоторых более "крупных" единиц, лексем, которые удобнее для последующего разбора. Примерами лексем являются основные ключевые слова, идентификаторы, константные значения (числа, строки, логические) и т.п.
На этапе лексического анализа обычно также выполняются такие действия, как удаление комментариев и обработка директив условной компиляции.
Для отображения некоторых лексем достаточно всего одного числа (это может быть, например, номер ключевого слова согласно внутренней нумерации компилятора), в то время как для записи других лексем может потребоваться пара, состоящая из номера лексического класса и ссылки в таблицу внешних представлений. Хорошая модель лексического анализатора – конечный преобразователь.