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の回路図、マイクロコード、ロジックキャプチャからリバースエンジニアリングされた仮想CPUを実行します。

元々は、信号レベルでのトラブルシューティングを支援するために、実際のCPUのデジタルレプリカとして設計されました。仮想KD11-EA CPUは、基本的に回路図のC言語による変換と、ROMテーブルのルックアップで構成されています。すべての組み合わせ論理ROMはリバースエンジニアリングされており、クロックジェネレータは正確にモデル化されています。

回路レベル(ROM真理値表+組み合わせ論理)がゲートレベル(Verilog)よりも選択されました。なぜなら、ハードウェアバグを再現するのに十分低レベルでありながら、プログラムを実行するのに十分高速だからです。

エミュレートされるデバイス

  • UNIBUSバックプレーン(タイミングと信号の精度が高い)
  • KD11-EA CPU(回路レベル)
  • オリジナルのブートROMおよび診断ROMを搭載したM9301ブートカード
  • DL11シリアルカード(タイミング精度が高い)
  • KW11ラインクロック(50/60 Hz)
  • プログラマコンソール(CPUトラブルシューティング用のメンテナンスモードを含む)
  • RK05ドライブ(RK11コントローラの高レベルエミュレーション)
  • RL01およびRL02ドライブ(RL11コントローラの高レベルエミュレーション)
  • テープリーダー
  • VT100端末(stdio、TCPポート、PTYモード対応)

アーキテクチャ

すべてのデバイスは、アドレスデコード、タイミング、バスサイクルを実行するUNIBUSバックプレーン(unibus.c)に接続されています。

内部では、CPUは以下のコンポーネントで構成されています。

ファイル説明
ucode_rom.h512x48ビットのマイクロコードストア(バイポーラPROM)。Bitsavers のVerilogとダンプに基づく。各マイクロワードは、1マイクロサイクルのALU、スクラッチパッド、バスインターフェース、分岐を制御する。
combo_roms.h組み合わせ論理ROM(E51-E83、E107)、IRデコード(E59/E60/E63/E69/E70/E71/E74)、ALU関数選択(E61/E82/E83)、トラップ/サービス優先順位(E52/E53)、および条件コード論理(E68/E107)。これらはすべて回路図とロジックキャプチャから再構成されています。オープンコレクタROMはMPCバスにワイヤードOR接続されます。
kd11ea.cデータパスエンジン。サイクルごとに1マイクロワードずつマイクロコードをステップ実行します。基本的な74xxゲートはC言語の論理演算子(!、&&、>>など)でシミュレートされています。74S181ビットスライスALUは完全にモデル化されています(4スライス、16ビット)。
mmu.cメモリ管理。カーネル/ユーザアドレス空間、18ビットリロケーション(3x 74S283加算器)、16組のPAR/PDR、フリーズロジック付きSR0/SR2アボートレジスタ。
clockgen.cクロックジェネレータ。E106ディレイライン(TAP 30/90/120フィードバック、TRAN INHバス待機)をモデル化。短サイクル:180 ns、長サイクル:240 ns、バス転送はSSYNが返るまで延長されます。
clock.cリアルタイムペーシング。シミュレートされた時間を実時間と同期させます。
int.c割り込みアービタ。BR4-BR7優先順位キュー。UNIBUSデイジーチェーン許可順序を近似します。

プログラマコンソール (Ctrl-P)

PDP-11/34Aのフロントパネルスイッチとインジケータをエミュレートします。CPUが停止しているとき(電源投入、HALT命令、またはCtrl-P)にアクティブになります。

バスの初期化、CPUの起動、コードのシングルステップ実行、任意アドレスでのデータの表示と書き込み、エミュレータの終了が可能です。

フロントエンドはエンジンから分離されているため、WebAssemblyでフォトリアリスティックなフロントパネルGUIも提供されています。

デバッグコンソール (Ctrl-E)

デバッグコンソールは、マイクロコードレベルと命令レベルの両方のコード用のインタラクティブデバッガを提供します。

  • s [n]: nマイクロ命令をシングルステップ実行し、完全な状態ダンプ(MPC、ALU、バス、レジスタ)を表示
  • b addr: PCブレークポイントを設定(8進数)、blで一覧表示、bd nで削除
  • g: 実行再開
  • u [addr] [n]: 命令逆アセンブル
  • c [addr] [n]: メモリダンプ(8進数)
  • mmu: MMU状態を表示(カーネル+ユーザPAR/PDR、現在のモードがマークされる)
  • r: レジスタダンプ

ロジックアナライザ (Ctrl-L)

開発中のll-34のトラブルシューティングは、実際のハードウェアのトラブルシューティングと非常に類似していることが判明したため、内部ロジックアナライザが実装され、信号のトレースとデータパスのプローブが可能になりました。これは、仮想CPUの微妙なROMやタイミングのバグを追跡する上で極めて有用でした。また、実際のハードウェアのトラブルシューティングのリファレンスとしても使用できます。ちょうど動作するハードウェアがエミュレータの開発に役立ったのと同様です。

ロジックアナライザは、主要なCPU信号上の102ポイントのプローブを可能にし、物理チップピン(DEC回路図K1-5からK2-9に対応するKD1:Exx:pin表記)にマッピングされています。便宜上、論理エイリアス(MPC、ALU_OUT、IR、PSW…)が提供されています。

サンプリングレートはリアルタイムCPUクロック(5,555,556 Hz)で、サンプルあたり180 nsの分解能です。設定可能な分周器により、より長いキャプチャウィンドウのためにサンプリングレートを下げることができます。

キャプチャはリングバッファ(最大64Kサンプル)を使用し、任意の信号で設定可能なトリガ、調整可能なトリガ位置(プリ/ポスト比)、およびオフライン分析用のCSVエクスポートが可能です。

ロジックキャプチャはプロジェクト全体で、理解が不十分なマルチプレクサ経路をマッピングしデバッグするために多用されました。

サンプルプログラム

ll-34には、いくつかの試用可能なプログラムとシステムが付属しています。ライフゲーム、V6 UNIX、オリジナルのテトリスゲーム付きRT-11 V4、そしてATTN/11(自己注意機構を備えた小さな学習可能なTransformer)です。

RT-11

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

ブートROMは自動的にRK11からロードし、オペレーティングシステムを起動します。DIRでファイル一覧、HELPでヘルプ表示、RUN TETRISでテトリスデモが起動します(ただし$TERMはおそらく誤っています)。RUN ADVENTでColossal Cave Adventureを起動します。これは実際のPDP-11/34上で動作するように作られています。

v6 Unix

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

ブートローダは最小限の@プロンプトを表示します。rkunixと入力してエンターを押すと、数秒後にlogin:プロンプトが表示されます。ユーザ名rootをパスワードなしで入力するとログインできます!注意点として、初期のUnixではcdはchdirという名前です。

ビルド

make + C11コンパイラ。他の依存関係はありません。

Linux(x86_64およびaarch64、muslとglibcの両方)、macOS aarch64、NetBSD 10 aarch64で警告なしでコンパイルできることを確認済み。

実行

CLIの他に、フォトリアリスティックなGUIを備えたスタンドアロンのWebAssemblyバージョンはこちらから入手できます:https://dbrll.github.io/ll-34。

注意: ll-34はリソースを大量に消費するエミュレータです。命令レベルエミュレータとは異なり、マイクロコードを1サイクルずつステップ実行し、各ステップでALU、組み合わせ論理ROM、スクラッチパッド、クロックジェネレータ、バスタイミングを実行します。ホストはサイクル精度を維持するために、5.5 MHzのクロックジェネレータのペースを継続的に維持する必要があります。

起動時に、エミュレータは自己ベンチマークを行い、実際のKD11-EAに対する速度を報告します。1x未満の比率はホストが追いつかず、タイミング精度が保証されないことを意味します。ベンチマークはWebAssemblyバージョンでは利用できません。ブラウザのタイマー分解能により信頼性が低いためです。WASMビルドはネイティブより遅いため、スマートフォンでの実行は通常は遅すぎます。

ツールをダウンロード