Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ll-34 — Эмулятор PDP-11/34 на уровне схем | Kitploit
Инструменты/GitHubGitHub/dbrll/ll-34
Безопасность встроенных системОбратная инженерияОтладчикиАппаратная БезопасностьОбучение и ОбразованиеПодобранные РесурсыАнализ Прошивок
GitHubdbrll/ll-34

ll-34

Эмулятор PDP-11/34 на уровне схем

Репозиторий
6944 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ll/34

ll/34 — это эмулятор на уровне схем для PDP-11/34A (1976), выполняющий виртуальный ЦП, восстановленный по принципиальным схемам, микрокоду и захватам логики реальной PDP-11/34A.

Изначально он создавался как цифровая копия реального ЦП для помощи в отладке на уровне сигналов. Виртуальный ЦП KD11-EA по сути представляет собой перевод принципиальных схем на C с обращениями к таблицам ПЗУ. Все комбинационные ПЗУ восстановлены, а тактовый генератор смоделирован с высокой точностью.

Эмуляция на уровне схем (таблицы истинности ПЗУ + комбинационная логика) была выбрана вместо вентильного уровня (Verilog), поскольку она достаточно низкоуровневая для воспроизведения аппаратных ошибок, но при этом достаточно быстрая для запуска программ.

Эмулируемые устройства

  • Системная магистраль UNIBUS (точное воспроизведение тактов и сигналов)
  • ЦП KD11-EA (на уровне схем)
  • Загрузочная карта M9301 с оригинальными ПЗУ загрузки и диагностики
  • Последовательный адаптер DL11 (точная синхронизация)
  • Линейные часы KW11 (50/60 Гц)
  • Консоль программиста (включая режим обслуживания для отладки ЦП)
  • Накопители RK05 (высокоуровневая эмуляция контроллера RK11)
  • Накопители RL01 и RL02 (высокоуровневая эмуляция контроллера RL11)
  • Считыватель перфоленты
  • Терминал VT100 с поддержкой режимов stdio, TCP-порта или PTY

Архитектура

Все устройства подключены к системной магистрали UNIBUS (unibus.c), которая выполняет декодирование адресов, синхронизацию и циклы шины.

Внутренне ЦП состоит из следующих компонентов:

Консоль программиста (Ctrl-P)

Эмулирует передние панельные переключатели и индикаторы PDP-11/34A. Активна, когда ЦП остановлен (включение питания, команда HALT или Ctrl-P).

Позволяет инициализировать шину, загрузить ЦП, выполнять пошаговое исполнение кода, просматривать и записывать данные по произвольным адресам, а также завершить эмулятор.

Интерфейс отделён от движка, поэтому фотореалистичный графический интерфейс передней панели также предоставляется в WebAssembly.

Отладочная консоль (Ctrl-E)

Отладочная консоль предоставляет интерактивный отладчик как для микрокода, так и для кода на уровне команд:

  • s [n]: выполнить n микроинструкций по шагам с полным дампом состояния (MPC, АЛУ, шина, регистры)
  • b адрес: установить точку останова по PC (восьмеричный), bl — список, bd n — удалить
  • g: продолжить выполнение
  • u [адрес] [n]: дизассемблировать инструкции
  • c [адрес] [n]: дамп памяти (восьмеричный)
  • mmu: показать состояние ММУ (PAR/PDR ядра и пользователя, текущий режим помечен)
  • r: дамп регистров

Логический анализатор (Ctrl-L)

Отладка ll-34 в процессе разработки оказалась настолько похожей на отладку реального оборудования, что был реализован внутренний логический анализатор для трассировки сигналов и зондирования тракта данных. Это оказалось решающим для отслеживания тонких ошибок в ПЗУ и синхронизации виртуального ЦП. Он также может использоваться как справочное средство для отладки реального оборудования, как и работающее оборудование помогло разработать эмулятор.

Логический анализатор позволяет зондировать 102 точки по основным сигналам ЦП, привязанным к физическим выводам микросхем (обозначения KD1:xx:pin соответствуют схемам DEC K1-5…K2-9). Для удобства предоставлены логические псевдонимы (MPC, ALU_OUT, IR, PSW…).

Частота дискретизации — тактовая частота ЦП в реальном времени (5 555 556 Гц) с разрешением 180 нс на отсчёт. Настраиваемый делитель уменьшает частоту для более длинных окон захвата.

Захваты используют кольцевой буфер (до 64 000 отсчётов) с настраиваемым запуском по любому сигналу, регулируемым положением триггера (соотношение до/после) и экспортом в CSV для автономного анализа.

Захваты логики широко использовались на протяжении всего проекта для картирования и отладки плохо документированных мультиплексных трактов.

Примеры программ

ll-34 поставляется с несколькими программами и системами для тестирования: «Игра Жизнь», V6 UNIX, RT-11 V4 с оригинальной игрой Tetris и ATTN/11 — небольшим обучаемым трансформером с самовниманием.

RT-11

root@kitploit:~
./ll-34 --rk ./wasm/demos/rtv4_rk.dsk

Загрузочное ПЗУ автоматически загрузится с RK11 и запустит операционную систему. Команда DIR выведет список файлов, HELP — справку, RUN TETRIS запустит демо Tetris (хотя $TERM, вероятно, будет неверным). RUN ADVENT запустит Colossal Cave Adventure, собранную на реальной PDP-11/34.

v6 Unix

root@kitploit:~
./ll-34 --rk ./wasm/demos/v6bin.rk

Загрузчик выведет минимальное приглашение @. Введите rkunix и нажмите Enter; через несколько секунд должно появиться приглашение login:. Введите имя пользователя root без пароля — и вы в системе! Обратите внимание, что в ранних версиях Unix команда cd называлась chdir.

Сборка

make + компилятор C11, других зависимостей нет.

Проверено: компилируется без предупреждений на Linux (x86_64 и aarch64) как с musl, так и с glibc, macOS aarch64, NetBSD 10 aarch64.

Запуск

Кроме CLI, доступна автономная версия WebAssembly с фотореалистичным графическим интерфейсом: https://dbrll.github.io/ll-34.

Примечание: ll-34 — ресурсоёмкий эмулятор. В отличие от эмуляторов уровня команд, он выполняет микрокод по одному такту за раз и на каждом шаге запускает АЛУ, комбинационные ПЗУ, сверхоперативную память, тактовый генератор и шинную синхронизацию. Хост должен непрерывно поддерживать темп тактового генератора 5,5 МГц, чтобы обеспечить цикловую точность.

При запуске эмулятор выполняет самодиагностику и сообщает свою скорость относительно реального KD11-EA. Коэффициент ниже 1x означает, что хост не справляется, и точность синхронизации не гарантируется. Диагностика недоступна в версии WebAssembly из-за низкого разрешения таймеров браузера. Поскольку сборка WASM медленнее нативной, запуск на смартфоне, как правило, будет слишком медленным.

Скачать инструмент
ФайлОписание
ucode_rom.h512×48-битное хранилище микрокода (биполярные ПЗУ), основанное на Verilog и дампах с Bitsavers. Каждое микрослово управляет АЛУ, сверхоперативной памятью, интерфейсом шины и ветвлением для одного микротакта.
combo_roms.hКомбинационные ПЗУ (E51-E83, E107), декодирование IR (E59/E60/E63/E69/E70/E71/E74), выбор функций АЛУ (E61/E82/E83), приоритет прерываний/ловушек (E52/E53) и логика кода условия (E68/E107), восстановленные по схемам и захватам логики. ПЗУ с открытым коллектором объединяются по схеме «монтажное ИЛИ» на шину MPC.
kd11ea.cДвижок тракта данных. Выполняет один микротакт за такт. Базовые вентили 74xx симулируются с помощью логических операторов C (!, &&, >> и т.д.). АЛУ 74S181 полностью смоделировано (4 секции, 16 бит).
mmu.cУправление памятью. Пространства ядра/пользователя, 18-битная переадресация (3 сумматора 74S283), 16 пар PAR/PDR, регистры прерываний SR0/SR2 с логикой фиксации.
clockgen.cТактовый генератор. Моделирует линию задержки E106 (обратная связь TAP 30/90/120, ожидание шины TRAN INH). Короткие такты: 180 нс, длинные: 240 нс, передачи по шине растягиваются до возврата SSYN.
clock.cСинхронизация реального времени. Поддерживает соответствие симулированного времени системному.
int.cАрбитр прерываний. Очередь приоритетов BR4-BR7, приблизительно воспроизводит порядок передачи по цепочке UNIBUS.