Отладчик CPU
Вкладка Debugger CPUs предназначена для пошаговой отладки программ микровычислителей CPU1 и CPU2 микросхемы. Отладчик позволяет ставить точки останова, выполнять программу по шагам, просматривать и изменять состояние регистров и памяти CPU в реальном времени.
Расположение элементов
Окно отладчика разделено на две части по вертикали:
- Верхняя панель — вкладки CPU1 и CPU2, каждая содержит панель отладки соответствующего микровычислителя.
- Нижняя панель — вкладки BUF1 и BUF2, отображающие содержимое буферной памяти (по 128 слов в шестнадцатеричном виде).
Панель каждого CPU состоит из трёх колонок:
- Левая колонка — кнопки управления, адреса точек останова, таблица регистров CPU.
- Центральная колонка — листинг программы на ассемблере (синтаксическая подсветка, только чтение) и шестнадцатеричные коды инструкций.
- Правая колонка — память данных CPU (256 слов, 32×8).
Кнопки управления
| Кнопка | Действие |
|---|---|
| Reset | Отключает CPU, записывает адреса точек останова и команду RUN в регистры P1BG_ctrl / P1BG_data, активирует через tap_event, заново включает CPU. После — считывает регистры из микросхемы. |
| Stop | Записывает команду STOP (биты command = 01) в P1BG_ctrl и активирует tap_event. CPU останавливается на текущей инструкции. |
| Run | Записывает команду RUN (биты command = 00) — CPU выполняет программу до следующей активной точки останова. |
| Step | Записывает команду STEP (биты command = 10) — CPU выполняет одну инструкцию и останавливается. |
| Read | Считывает регистры CPU из микросхемы. При установленных флажках Mem/Bf1/Bf2 — также считывает память CPU и буферы. |
Точки останова (Breakpoints)
Микросхема поддерживает до 2 точек останова на каждый CPU. Точки останова задаются двумя парами полей:
| Поле | Описание |
|---|---|
| Address 1 + ena | Адрес (0–511) и флаг включения точки останова 1. Записывается в биты [8:0] и бит [9] регистра P1BG_ctrl. |
| Address 2 + ena | Адрес (0–511) и флаг включения точки останова 2. Записывается в биты [8:0] и бит [9] регистра P1BG_data. |
Установка точек останова мышью
Клик на полосе номеров строк (gutter) в листинге ассемблера устанавливает или снимает точку останова на этой строке. Точка останова отображается в виде красного кружка слева от номера строки. Максимум — 2 точки; при установке третьей самая старая удаляется.
Текущая позиция программы (PC) подсвечивается зелёной полосой в gutter, а номер строки выделяется красным цветом.
Принцип работы точек останова
Точки останова реализованы аппаратно в микросхеме. Когда CPU достигает адрес, совпадающий с stop1_pc или stop2_pc (при активном соответствующем флаге stopX_ena), микровычислитель останавливается, и в регистре статуса устанавливается флаг DBG_STOP.
Команда передаётся в микросхему через регистры P1BG_ctrl (адрес 92 для CPU1, 94 для CPU2) и P1BG_data (адрес 93, 95):
| Биты | Поле | Назначение |
|---|---|---|
| 12:11 | command | 00 = RUN (до точки останова), 01 = STOP, 10 = STEP |
| 10 | tap_event | Переход 0→1 активирует команду |
| 9 | stop1_ena | Разрешение точки останова 1 |
| 8:0 | stop1_pc | Адрес точки останова 1 |
Регистр P1BG_data содержит аналогичные поля для второй точки останова и поле sel_reg для выбора считываемых регистров CPU.
Регистры CPU
После нажатия Read (или автоматически после Reset/Step) в левой таблице отображаются регистры микровычислителя:
Основные регистры
| Регистр | Разрядность | Описание |
|---|---|---|
| pc | 9 бит | Счётчик команд (Program Counter). Текущая позиция выполнения программы. Подсвечивается зелёной полосой в листинге. |
| cur_com | 14 бит | Текущая инструкция (отображается в шестнадцатеричном виде). |
| ron0 — ron5 | 28 бит, знаковые | Регистры общего назначения R0–R5. Состоят из двух 14-битных слов. |
| ron6, ron7 | 56 бит, знаковые | Расширенные регистры R6–R7. Состоят из четырёх 14-битных слов. |
Системные регистры и каналы
| Регистр | Разрядность | Описание |
|---|---|---|
| stp | 1 бит | Флаг пошагового режима |
| stop | 1 бит | Флаг останова отладчиком (DBG_STOP) |
| a_hand | 3 бит | Адрес мультиплексора HAND |
| ch_rel | 9 бит | Состояние канального релиза |
| ch0 — ch7 | различные | Состояние каналов микровычислителя |
Память и буферы
Память данных CPU (правая колонка)
Отображает 256 слов (32 строки × 8 столбцов) памяти данных CPU. Читается с адреса 512 для CPU1 или 1024 для CPU2. Для отображения установите флажок Mem и нажмите Read.
Буферы BUF1 и BUF2 (нижняя панель)
Каждый буфер отображает 128 слов (8 строк × 16 столбцов) в шестнадцатеричном виде:
- BUF1 — адрес IC 768
- BUF2 — адрес IC 1280
Для чтения установите флажки Bf1 и/или Bf2 и нажмите Read.
Связь с редактором ассемблера (Asm Editor)
Листинг программы в центре панели отладчика — только для чтения. Непосредственно в отладчике редактировать код нельзя.
Для изменения программы:
- Откройте вкладку Asm Editor (редактор ассемблера).
- Внесите изменения в исходный код.
- Нажмите Save (сохранить файл).
- При сохранении в Asm Editor программа автоматически парсится, и обновлённый листинг передаётся в отладчик DebuggerCpus — синтаксически подсвеченный текст и шестнадцатеричные коды обновляются.
Таким образом, цикл отладки выглядит так: редактирование в Asm Editor → сохранение → автоматическое обновление в Debugger → Reset/Step/Run для загрузки и выполнения.
Типовой порядок работы
- Откройте вкладку Debugger CPUs.
- При необходимости отредактируйте программу в Asm Editor и сохраните — листинг обновится в отладчике.
- Установите точки останова кликом на gutter (красные кружки) или введите адреса вручную в поля Address 1/2 и включите флажки ena.
- Нажмите Reset — CPU перезагрузится с точками останова и начнёт выполнение (команда RUN).
- При достижении точки останова CPU остановится. Нажмите Read для просмотра регистров.
- Используйте Step для пошагового выполнения.
- Нажмите Run для продолжения до следующей точки останова.
- Для просмотра памяти данных установите флажок Mem и нажмите Read.