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


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


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

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

  1. Запуск Интерпретатора.
  2. Открытие исходных файлов - результатов работы Кросс-Ассемблера и файлов с управляющей информацией (описание файлов - внешних устройств, программа поступления прерываний, описание фрагментов памяти и отдельных ячеек и т.п.).
  3. Считывание управляющей информации.
  4. Установка начальных значений для компонентов модели (содержимое памяти, регистры, счетчик модельного времени).
  5. Интерактивное задание/корректировка управляющей информации (режим выполнения, точки останова и т.п.).
  6. Автоматический режим?
  7. Если установлен пошаговый (не автоматический) режим выполнения, выполняется ввод и обработка команд оператора в интерактивном режиме. Эта обработка может заканчиваться либо продолжением выполнения интерпретатора в пошаговом или автоматическом режиме, либо завершением его работы по команде оператора.
  8. Если установлен автоматический режим выполнения, но текущее значение регистра - счетчика адреса совпадает с одной из заданных точек останова, также выполняется ввод и обработка команд оператора в интерактивном режиме.
  9. Проверяется счетчик модельного времени сравнивается с временем поступления первого прерывания в списке прерываний.
  10. Если счетчик модельного времени больше или равен времени поступления первого прерывания в списке, выполняется сохранение текущего состояния и занесение в регистр-счетчик адреса секции обработки прерывания данного типа.
  11. Первый элемент удаляется их списка прерываний и происходит возврат на начало итерации обработки команды.
  12. Если прерывание не поступило, выбирается первый байт команды (при отладке по объектному модулю) или ее мнемоника (при отладке по исходному тексту).
  13. Код операции или мнемоника команды ищется в таблице команд.
  14. При неуспешном поиске Интерпретатор заканчивается с сообщением об ошибке.
  15. Выбор операндов из кода команды или из текста оператора.
  16. Проверка правильности кодирования операндов, проверка корректности обращения к памяти.
  17. При ошибках в операндах или в обращении к памяти Интерпретатор заканчивается с сообщением об ошибке.
  18. Задан ли для адреса операнда останов при обращении? Если да - возврат на выполнение команд в интерактивном режиме.
  19. Интерпретация команды и запись результата
  20. Вычисление и занесение в регистр-счетчик адреса следующей команды.
  21. Проверка, является ли адрес в регистре-счетчике адреса адресом 1-го байта команды
  22. Если это не так, Интерпретатор заканчивается с сообщением об ошибке.
  23. Модификация счетчика модельного времени и переход на выполнение следующей команды.

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

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

x




- Начало -  - Назад -  



Книжный магазин