Системное программирование. Конспект лекций




Взаимодействие с человеком-оператором - часть 2


В схеме остается только 1-й проход Кросс-Ассемблера. Выход его - исходный текст с разметкой адресов и таблица символов является основным входом Интерпретатора. Необходимость во 2-ом проходе Кросс-Ассемблера отпадает. В начале выполнения Интерпретатор должен построить модель памяти, в которой он размещает, однако, только данные программы, но не команды. При работе Интерпретатор повторяет многие действия 2-го прохода Кросс-Ассемблера, читает не коды, а исходные тексты и распознает команду не по коду операции, а по мнемонике, и интерпретирует операнды не по кодам, а по исходным текстам. Изменения в исходном тексте оператора программы должны автоматически реплицироваться в соответствующем операторе (только в одном операторе!) результата 1-го прохода, и тогда при следующем выполнении этого оператора будет моделироваться уже выполнение новой команды. Однако, поскольку в результате 1-го прохода каждый оператор уже привязывается к определенному адресу, возможность изменения должна ограничиваться тем, что длина новой команды обязательно равна длине старой команды. Более сложные изменения потребуют повторного выполнения 1-го прохода Кросс-Ассемблера.

Итоговая схема алгоритма функционирования Интерпретатора сводится к следующей:

  • Запуск Интерпретатора.
  • Открытие исходных файлов - результатов работы Кросс-Ассемблера и файлов с управляющей информацией (описание файлов - внешних устройств, программа поступления прерываний, описание фрагментов памяти и отдельных ячеек и т.п.).
  • Считывание управляющей информации.
  • Установка начальных значений для компонентов модели (содержимое памяти, регистры, счетчик модельного времени).
  • Интерактивное задание/корректировка управляющей информации (режим выполнения, точки останова и т.п.).
  • Автоматический режим?
  • Если установлен пошаговый (не автоматический) режим выполнения, выполняется ввод и обработка команд оператора в интерактивном режиме. Эта обработка может заканчиваться либо продолжением выполнения интерпретатора в пошаговом или автоматическом режиме, либо завершением его работы по команде оператора.
  • Если установлен автоматический режим выполнения, но текущее значение регистра - счетчика адреса совпадает с одной из заданных точек останова, также выполняется ввод и обработка команд оператора в интерактивном режиме.
  • Проверяется счетчик модельного времени сравнивается с временем поступления первого прерывания в списке прерываний.
  • Если счетчик модельного времени больше или равен времени поступления первого прерывания в списке, выполняется сохранение текущего состояния и занесение в регистр-счетчик адреса секции обработки прерывания данного типа.
  • Первый элемент удаляется их списка прерываний и происходит возврат на начало итерации обработки команды.
  • Если прерывание не поступило, выбирается первый байт команды (при отладке по объектному модулю) или ее мнемоника (при отладке по исходному тексту).
  • Код операции или мнемоника команды ищется в таблице команд.
  • При неуспешном поиске Интерпретатор заканчивается с сообщением об ошибке.
  • Выбор операндов из кода команды или из текста оператора.
  • Проверка правильности кодирования операндов, проверка корректности обращения к памяти.
  • При ошибках в операндах или в обращении к памяти Интерпретатор заканчивается с сообщением об ошибке.
  • Задан ли для адреса операнда останов при обращении? Если да - возврат на выполнение команд в интерактивном режиме.
  • Интерпретация команды и запись результата
  • Вычисление и занесение в регистр-счетчик адреса следующей команды.
  • Проверка, является ли адрес в регистре-счетчике адреса адресом 1-го байта команды
  • Если это не так, Интерпретатор заканчивается с сообщением об ошибке.
  • Модификация счетчика модельного времени и переход на выполнение следующей команды.

  • Окончание работы Интерпретатора может происходить:

    • при обнаружении ошибки в программе;
    • при вводе оператором интерактивной команды завершения работы;
    • при обработке команды останова (HALT) в программе.

    x




    Содержание  Назад