Самоучители для программиста


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

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



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

Интерпретатор может выполняться в автоматическом или пошаговом режиме. В автоматическом режиме Интерпретатор моделирует выполнение команд программы без остановок до команды типа HALT или до точки останова. В точке останова оператор может вводить команды, управляющие действиями Интерпретатора и выбрать режим продолжения выполнения. В пошаговом режиме Интерпретатор после выполнения каждой команды программы останавливается и предоставляет оператору возможность вводить команды управления. Командами управления работой Интерпретатора могут быть:

  • команды на отображение/изменение состояния/содержимого компонентов модели;
  • команды задания точек останова;
  • команды моделирования прерываний;
  • команды установки режима выполнения;
  • команда окончания работы.

Отображаться должны состояния и значения всех составляющих программной модели ВС: регистров (РОН, счетчика адреса, состояния), заданных участков памяти и их признаков, счетчика модельного времени, программы поступления прерываний и т.д. Отображаемые значения также должны быть доступны для изменений. Отметим, что для интерактивного отображения/изменения должны быть доступны также байты признаков памяти. Изменение содержимого регистра-счетчика адреса равносильно передачи управления в программе.

Точки останова могут задаваться в исходном для Интерпретатора файле и вводиться/изменяться в ходе интерактивной отладки. Могут быть предусмотрены остановы при:

  • передаче управления по заданному адресу;
  • чтении данных по заданному адресу;
  • записи данных по заданному адресу.

Связь отладки с исходным текстом. Такая связь безусловно удобно и может быть осуществлена относительно несложно, если выход 1-го прохода Кросс-Ассемблера передается на вход Интерпретатора. Выход 1-го прохода связывает операторы исходного текста с адресами памяти. Таким образом, по значению счетчика адреса в каждый момент выполнения программы можно найти в выходе 1-го прохода соответствующий оператор исходного текста. Если на вход Интерпретатора подается также сформированная 1-ым проходом таблица символов, то есть возможность обращаться к переменным программы и к точкам передачи управления по символьным именам.

Можно ли обеспечить изменение прямо в ходе отладки исходного текста? Схема решения сводится к представленной на рисунке. В схеме остается только 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. Модификация счетчика модельного времени и переход на выполнение следующей команды.
НазадОглавление
КаталогИндекс раздела

x







Начало  Назад  


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