- •Системное программное обеспечение
- •Разд. 1. Операционные системы и среды
- •Тема 1.1. Структура программного обеспечения вычислительной системы
- •Тема 1.2 Назначение, функции и структура операционной системы
- •1.2.1 Типы ос. Системы реального времени и операционные системы реального времени
- •Тема 1.3. Управление временем центрального процессора
- •Рекомендуется всегда проверять возвращаемое значение Res. Получение и использование процессом ссылок на себя
- •Использование потоков при разработке приложений
- •1.3.3 Синхронизация взаимодействующих потоков
- •Interlocked – функции.
- •Семафорные примитивы Дейкстры
- •Решение проблемы критических участков с помощью семафорных примитивов Дейкстры
- •1.3.4 Синхронизации потоков средствами операционной системы
- •Пример 2
- •Пример 3 Поток_1 Поток_2
- •1.3.5. Проблема тупиков и методы борьбы с тупиками
- •Взаимного исключения, при котором процессы имеют монопольный доступ к ресурсам;
- •Ожидания, при котором процесс, запрашивающий ресурс, ждет до тех пор, пока запрос не будет удовлетворен, удерживая ранее полученные ресурсы;
- •Методы борьбы с тупиками
- •Тема 1.4 Управление памятью
- •Защищенный режим процессоров Intel и его возможности
- •1.4.2. Реализация многозадачного режима в защищенном режиме процессоров фирмы Intel
- •Аппаратная поддержка многозадачности
- •Обработка прерываний в реальном режиме. Вектора прерываний.
- •Режимы работы мп 386
- •Системный режим
- •Особенности s – режима.
- •Организация виртуальной памяти
- •Управление страничной памятью в ос ms Windows
- •Линейный адрес
- •1.4.4. Разделы в виртуальном адресном пространстве процесса
- •Области применения dll
- •Основные dll ms Windows:
- •Создание dll
- •Использование dll (импорт функций из dll)
- •Неявная загрузка dll (неявное подключение)
- •Явная загрузка dll
- •Выполнение процедур инициализации и деинициализации Dll
- •Тема 1.6 Структура ms Windows и драйверы режима ядра
- •Тема 1.7 Управление вводом-выводом и файловые системы Win32
- •Эволюция файловых систем эвм
- •Раздел 2. Программирование в операционной среде
- •Тема 2.1. Ассемблеры и макроязыки
- •2.1.1. Этапы подготовки программы к выполнению
- •Операнды команд
- •Алгоритмы работы Ассемблеров
- •Двухпроходный Ассемблер - 1-й проход
- •2.1.2. Макроязыки
- •Заголовок макроопределения
- •Окончание макроопределения
- •Локальные переменные макроопределения
- •Присваивание значений переменным макроопределения
- •Оператор безусловного перехода и метки макроопределения
- •Тема 2.2.Трансляторы
- •2.3.1. Трансляторы. Компиляторы и интерпретаторы. Мобильность программного обеспечения
- •Тема 2.3 Формальные языки и грамматики
- •Синтаксический и лексический анализатор
- •Детерминированные и недетерминированные автоматы
- •Алгоритм синтаксического анализа
- •Пример 1
- •Пример 2
Оператор безусловного перехода и метки макроопределения
Возможный формат оператора:
MGO макрометка
Концептуально важным понятием является макрометка. Макрометка может стоять перед оператором Макроязыка или перед оператором языка Ассемблера. Макрометки не имеют ничего общего с метками в программе. Передача управления на макрометку означает то, что при обработке макроопределения следующим будет обрабатываться оператор, помеченный макрометкой. Макрометки должны иметь какой-то признак, по которому их имена отличались бы от имен программы и переменных макроопределения. Например, если имена переменных макроопределения начинаются с символа &, то имя макрометки может начинаться с &&.
Оператор условного перехода
Возможный формат оператора:
MIF условное_выражение макрометка
Если условное_выражение имеет значение "истина", обработка переходит на оператор, помеченный макрометкой, иначе обрабатывается следующий оператор макроопределения.
Условные блоки
Возможный формат оператора:
IF условное_выражение
операторы_макроопределения_блок1
ENDIF
ELSE
операторы_макроопределения_блок2
ENDIF
Если условное_выражение имеет значение "истина", обрабатываются операторы макроопределения от оператора IF до оператора ENDIF, иначе обрабатываются операторы макроопределения от оператора ESLE до оператора ENDIF. Как и в языках программирования блок ELSE - ENDIF не является обязательным.
Условные выражения описаны выше. Обычно предусматриваются специальные формы:
IFDEF имя
IFNDEF имя
проверяющие просто определено или не определено данное имя.
Операторы условных блоков довольно часто являются не операторами Макроязыка, а директивами самого языка Ассемблера.
Операторы повторений
Операторы повторений Макроязыка (или директивы повторений языка Ассемблера) заставляют повторить блок операторов исходного текста, возможно, с модификациями в каждом повторении. Операторы повторений играют роль операторов цикла в языках программирования, они не являются обязательными для макроязыка, так как цикл можно обеспечить и условным переходом.
Как и в языках программирования, в Макроязыке может быть несколько форм операторов повторения, приведем некоторые из возможных форм:
MDO выражение
блок_операторов_макроопределения
ENDMDO
выражение должно иметь числовой результат, обработка блока операторов повторяется столько раз, каков результат вычисления выражения.
MDOLIST переменная_макроопределения,список_выражений
блок_операторов_макроопределения
ENDMDO
обработка блока операторов повторяется столько раз, сколько элементов имеется в списке_выражений, при этом в каждой итерации переменной_макроопределения присваивается значение очередного элемента из списка_выражений.
MDOWHILE условное_выражение
блок_операторов_макроопределения
ENDMDO
обработка блока операторов повторяется до тех пор, пока значение условного_выражения - "истина".
Завершение обработки
Обработка макроопределения завершается при достижении оператора MEND. Однако, поскольку алгоритм обработки макроопределения может разветвляться, должна быть предусмотрена возможность выхода из обработки и до достижения конца макроопределения. Эта возможность обеспечивается оператором MEXIT. Операндом этого оператора может быть код_серьезности.
