Контрольные точки

Лиза П. Хакер хочет добавить в имитатор контрольные точки (breakpoints) для облегчения отладки проектов машин. Вас наняли для реализации такой возможности. Лиза хочет, чтобы в последовательности команд контроллера можно было указать место, где имитатор остановится и позволит ей исследовать состояние машины. Вам нужно реализовать процедуру

(set-breakpoint <machine> <label> <n>)

которая устанавливает контрольную точку перед n -й командой, следующей за указанной меткой. Например,

(set-breakpoint gcd-machine 'test-b 4)

установит контрольную точку в gcd-machine непосредственно перед присваиванием регистру a . Когда моделирование достигает контрольной точки, имитатор должен распечатать метку и смещение точки, а затем прекратить выполнение команд. Тогда Лиза может с помощью get-register-contents и set-register-contents! исследовать и изменять состояние имитируемой машины. Затем она должна быть способна продолжить выполнение, сказав

(proceed-machine <machine>)

Кроме того, необходимо иметь возможность удалить контрольную точку с помощью

(cancel-breakpoint <machine> <label> <n>)

и удалить все контрольные точки с помощью

(cancel-all-breakpoints <machine>)

Комментарии отсутствуют.

Необходима авторизация

Вы должны авторизоваться для создания комментария.

Вход