Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
ll-34 — Emulatore PDP-11/34 a livello di circuito | Kitploit
Strumenti/GitHubGitHub/dbrll/ll-34
Sicurezza Sistemi EmbeddedReverse EngineeringDebuggerSicurezza HardwareApprendimento e FormazioneRisorse CurateAnalisi del Firmware
GitHubdbrll/ll-34

ll-34

Emulatore PDP-11/34 a livello di circuito

Vedi Repository
6942220h 37m faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

ll/34

ll/34 è un emulatore a livello di circuito per il PDP-11/34A (1976), che esegue una CPU virtuale ricostruita a ritroso dagli schemi elettrici, dal microcodice e dalle acquisizioni logiche di un PDP-11/34A reale.

È stato originariamente progettato come replica digitale della CPU reale per assistere nella risoluzione dei problemi a livello di segnale. Il livello di circuito (tabelle di verità delle ROM + logica combinatoria) è stato scelto rispetto al livello di gate (Verilog) perché è sufficientemente a basso livello da riprodurre i bug hardware, ma abbastanza veloce da eseguire programmi.

Architettura

L'albero dei sorgenti è organizzato come segue:

DirectoryDescrizione
pdp11/La macchina: CPU, UNIBUS, periferiche, ROM di boot, modello della console programmatore, sonda del logic analyzer. machine.c la assembla ed esegue.
frontends/Interfacce utente: cli/ (terminale), wasm/ (GUI nel browser), tty/ (lato host della linea seriale).
demos/Immagini disco e programmi.
docs/Documentazione DEC.

La CPU virtuale (pdp11/kd11ea/) replica il generatore di clock, le porte logiche e l'ALU (simulati in logica C), avanzando attraverso il microcodice originale estratto dalle ROM. È composta dai seguenti componenti:

FileDescrizione
roms/Dump delle ROM (combinatorie e microcodice).
kd11ea.cNucleo della CPU. Avanza attraverso il microcodice una micro-parola per ciclo. Le porte 74xx e le ALU a fette di bit 74S181 sono modellate qui.
rom_wiring.hCablaggio degli indirizzi e decodifica delle uscite per le ROM combinatorie.
ucode_rom.hDocumenta e assembla il microcodice della CPU in micro-parole da 512×48 bit.
clockgen.cGeneratore di clock. Modella la linea di ritardo originale che scandisce la CPU.
mmu.cGestione della memoria. Spazi di indirizzamento kernel/user e traduzione della memoria da 16 a 18 bit.
int.cArbitro degli interrupt. Implementa la coda di priorità e approssima l'ordine di concessione della daisy-chain dell'UNIBUS.
clock.cClock interno dell'emulatore. Mantiene il tempo simulato sincronizzato con il tempo reale.

Dispositivi emulati

I seguenti dispositivi sono stati implementati. Poiché l'Unibus è asincrono, non tutti i dispositivi devono essere accurati in termini di temporizzazione o di segnale.

La Programmer Console, in particolare, utilizza un'emulazione ad alto livello del suo comportamento anziché una ricostruzione a basso livello dell'Intel 8008 e del cablaggio della sua scheda.

  • Backplane UNIBUS (accurato in temporizzazione e segnale)
  • CPU KD11-EA
  • Scheda di boot M9301 con ROM di boot e diagnostica originali
  • Scheda seriale DL11 (accurata in temporizzazione)
  • Line clock KW11 (50/60 Hz)
  • Programmer Console (inclusa la modalità manutenzione per la risoluzione dei problemi della CPU e dell'MPC)
  • Unità RK05 (controller RK11)
  • Unità RL01 e RL02 (controller RL11)
  • Lettore di nastro
  • Terminale VT100 con modalità stdio, porta TCP o PTY

I dispositivi sono inseriti nel backplane UNIBUS (unibus.c), che esegue la decodifica degli indirizzi, la temporizzazione e i cicli di bus.

Programmer Console (Ctrl-P)

La Programmer Console emula gli interruttori e gli indicatori del pannello frontale del PDP-11/34A. Consente di inizializzare il bus, avviare la CPU, eseguire il codice passo-passo, esaminare e depositare dati a indirizzi arbitrari e uscire dall'emulatore.

La console viene generata automaticamente ogni volta che la CPU viene arrestata (accensione, istruzione HALT o Ctrl-P).

Il frontend è disaccoppiato dal motore, quindi è disponibile anche una GUI fotorealistica del pannello frontale in WebAssembly.

Debug Console (Ctrl-E)

La Debug Console fornisce un debugger interattivo sia per il codice a livello di microcodice che a livello di istruzioni:

  • s [n]: esegue passo-passo n micro-istruzioni con dump completo dello stato (MPC, ALU, bus, registri)
  • b addr: imposta un breakpoint sul PC (ottale), bl per elencarli, bd n per eliminarli
  • g: riprende l'esecuzione
  • u [addr] [n]: disassembla le istruzioni
  • c [addr] [n]: dump della memoria (ottale)
  • mmu: mostra lo stato della MMU (PAR/PDR kernel + user, modalità corrente evidenziata)
  • r: dump dei registri

ll-34's debug console

Debug console nella GUI Web Assembly.

Logic Analyzer (Ctrl-L)

La risoluzione dei problemi di ll-34 durante il suo sviluppo si è rivelata così simile alla risoluzione dei problemi dell'hardware reale che è stato implementato un logic analyzer interno per tracciare i segnali e sondare il datapath. Questo si è rivelato determinante per individuare sottili bug di ROM e di temporizzazione nella CPU virtuale.

Il logic analyzer consente di sondare 107 segnali, inclusi 72 dagli schemi DEC, 31 segnali compositi (registri, bus e flag) e 4 valori di temporizzazione dall'emulatore. Le versioni future consentiranno la cattura della maggior parte dei segnali dagli schemi.

La frequenza di campionamento è il clock della CPU in tempo reale (5.555.556 Hz) con una risoluzione di 180 ns per campione. Un divisore configurabile riduce la frequenza di campionamento per finestre di cattura più lunghe.

Le catture utilizzano un ring buffer (fino a 64K campioni) con trigger configurabile su qualsiasi segnale, posizione del trigger regolabile (rapporto pre/post) ed esportazione CSV per l'analisi offline.

Il logic analyzer di ll-34 (in basso) può essere utilizzato per risolvere i problemi dell'hardware reale (in alto), proprio come l'hardware reale è stato utilizzato per risolvere i problemi di ll-34.

ll-34's logic analyzer

Programmi di esempio

ll-34 viene fornito con alcuni programmi e sistemi da provare: un Game of Life, V6 UNIX, RT-11 V4 con il gioco originale Tetris e ATTN/11, un piccolo Transformer addestrabile con self-attention.

RT-11

./ll-34 --rk ./demos/rtv4_rk.dsk
Scarica lo strumento