操作方法
画面構成
画面には以下の操作可能な要素があります。
- レジスタエディタ — CPUレジスタの現在値を表示・編集します。
- メモリエディタ — メモリの内容を16進数で表示・編集します。
- Start/Stopボタン — CPUの実行を開始・停止します。
- MMUトグルボタン — MMU(仮想メモリ)の有効・無効を切り替えます。
起動時の状態
起動時、CPUは停止状態です。メモリの先頭にはアドレス0x0000へのジャンプ命令(無限ループ)が配置されています。
メモリエディタにフォーカスがある状態で開始します。
フォーカス切り替え
キーボード操作は、フォーカスのあるエディタに対して有効です。
| キー | 動作 |
|---|---|
M | メモリエディタにフォーカスを移動します。 |
R(メモリエディタ非編集モード時) | レジスタエディタにフォーカスを移動します。 |
Start/Stopボタン
画面左上にあるボタンです。マウスクリックでCPUの実行を制御します。
| 状態 | 表示 | クリック時の動作 |
|---|---|---|
| 停止中 | ▶(スタートマーク) | CPUの実行を開始します。 |
| 実行中 | ⏸(一時停止マーク) | CPUの実行を停止します。 |
このボタンによる停止・再開は、HLT命令によるCPU停止とは異なります。HLT命令で停止した状態からCPUを再開する方法はありません。その場合はページをリロードしてください。
MMUトグルボタン
CPUの絵の上にあるトグルボタンです。CPU停止中にマウスクリックすることで、MMUの有効・無効を切り替えます。
CPU実行中は操作できません。
MMUを有効にする場合は、事前にページテーブルとPTBRを設定してください。詳細はアーキテクチャを参照してください。
レジスタエディタ
CPUレジスタの現在値を表示し、16進数で編集できます。
表示レイアウト
A:XX F:XX PC :XXXX B:XX C:XX SP :XXXX D:XX E:XX PTBR:XXXX H:XX L:XX
A〜Lは16進数2桁、PC・SP・PTBRは16進数4桁で表示されます。
非編集モード
選択中のレジスタが黄色でハイライトされます。
| キー | 動作 |
|---|---|
↑ | 選択レジスタを上へ移動します。 |
↓ | 選択レジスタを下へ移動します。 |
Enter | 編集モードに入ります。 |
M | メモリエディタにフォーカスを移動します。 |
編集モード
ニブル(4ビット)単位で値を入力できます。赤色のカーソルが編集位置を示します。
| キー | 動作 |
|---|---|
0〜9, A〜F | 16進数を入力します。カーソルは自動的に右へ移動します。 |
← | カーソルを左へ移動します。 |
→ | カーソルを右へ移動します。 |
ESC | 編集を確定し、非編集モードに戻ります。 |
ESCキーは変更の「確定」です。変更を破棄する手段はありません。
メモリエディタ
メモリの内容を16進数で表示し、バイト単位で編集できます。全アドレス範囲(0x0000〜0xFFFF)にアクセスできます。
表示形式
|hex -------- 0000|XX 0001|XX ...
1行に1バイトを表示します。カーソル移動に応じて表示範囲が自動スクロールします。
非編集モード
選択中のバイトが黄色でハイライトされます。
| キー | 動作 |
|---|---|
↑ | 1行上へ移動します。長押しで連続スクロールします。 |
↓ | 1行下へ移動します。長押しで連続スクロールします。 |
← / → | アドレスを移動します。 |
Enter | 編集モードに入ります。 |
G | アドレス入力モードに入ります。 |
編集モード
| キー | 動作 |
|---|---|
0〜9, A〜F | ニブルに16進数を入力します。カーソルは自動的に右へ移動します。 |
← / → | ニブル間でカーソルを移動します。 |
ESC | 編集を確定し、非編集モードに戻ります。 |
ESCキーは変更の「確定」です。変更を破棄する手段はありません。
アドレス入力モード(Go to)
Gキーで開始します。指定したアドレスに直接ジャンプできます。
| キー | 動作 |
|---|---|
0〜9, A〜F | 16進数でアドレスを入力します(最大4桁)。 |
Enter | 入力したアドレスにジャンプします。 |
Backspace | 入力を1文字削除します。 |
ESC | アドレス入力をキャンセルします。 |
プログラムの実行方法
以下の手順で任意の機械語プログラムを実行できます。
手順
- CPUが停止していることを確認します(Start/Stopボタンが「▶」の状態)。
- メモリエディタで、任意のアドレスにプログラムの命令列を配置します。
- レジスタエディタで、PCレジスタにプログラムの先頭アドレスを設定します。
- Start/Stopボタンをクリックして、CPUの実行を開始します。
例: 加算プログラム
AレジスタとBレジスタの値を加算する例です。
- メモリの0x0100番地以降に以下の命令列を配置します。
| アドレス | 値 | 命令 |
|---|---|---|
| 0x0100 | 0x80 | ADD B(A = A + B) |
| 0x0101 | 0x76 | HLT(CPU停止) |
- PCレジスタに
0x0100を設定します。 - Start/Stopボタンをクリックして実行を開始します。
プログラムの最後にはHLT命令やJMP命令による無限ループ等を配置してください。配置しない場合、CPUの実行がプログラムの後のアドレスへも進んでしまいます。