CPUの基本動作とIntelCpuクラスのメソッドの定義
CPUは各社いろいろなものを製造していますが、共通する動作があります。それは、始めに「バイナリ値を読み込み」、次にバイナリ値から「命令の解釈」を行い、最後に「命令を実行」することです。昨今のCPUは進化していますのでパイプラインなどいろいろ高度で複雑な動作をしますが、この基礎的な動きだけは変わりません。
細かい部分はまだ説明していませんが、理論から入ると退屈な上に身に付かないので、早速分かった部分だけでも実装して、CPUの動作を感覚として身に付けましょう。逐次実装して確認することがプログラミング技術の向上につながります。
Public Class IntelCpu 'バイナリ値を読み込む処理を行います。 Public Sub ReadBinary(ByVal BinaryDatas() As Byte) End Sub '読み込まれたバイナリ値を解析します。 Public Sub AnalyzeBinary() End Sub '解析済みの命令を実行します。 Public Sub ExecuteCommand() End Sub End Class
これで枠組みだけ実装できました。誰しも早く細部を実装したくなるものですが、前回紹介したテストファーストの考えを思い出してください。これらのメソッドの詳細な処理を実装する前にしておくことがあります。それはGUIの確認用プログラムを作ることです。この確認用プログラムを一般的に「テストドライバ」と呼びます。
テストファーストの考えに従い、これ以降のプログラミングはこのテストドライバを起動してチェックしながら行うことにします。
テストドライバの準備
それでは確認用GUIプログラムを作りましょう。まずは、前回で作ったソリューションに「TestDriver」という名の新規Windowsアプリケーションプロジェクトを追加します。次に、フォームにレジスタの内容を表示するためのコントロールを追加してください。

追加するコントロールは次のとおりです。
| 種類 | コントロール名 |
| GruopBox4個 | 32ビットのレジスタ名+Group |
| レジスタ名を表示するラベル16個 | レジスタの名前+Label |
| 10進表記の値を表示するラベル16個 | レジスタの名前+ValueLabel |
| 16進表記の値を表示するラベル16個 | レジスタの名前+H+Value+Label |
レジスタは入れ子状態になっているので、関連するレジスタはGroupBoxでまとめて表示します。値を表示するラベルは、TextAlignプロパティをMiddleRightに変更してください。
| 種類 | コントロール名 |
| 文字Registerを表示するラベル1個 | RegisterLabel |
| 対象となるレジスタを選択するためのコンボボックス1個 | RegisterCombo |
| 設定値を入力するためのテキストボックス1個 | RegisterText |
| 値の設定を確定するためのボタン1個 | MoveDataButton |
RegisterTextコントロールは、数値であることを強調するためにTextAlignをMiddleRightにして、ImeModeプロパティの値をOffにしてください。
最後に、フォームの名前を「TestForm」にします。これでコントロールの配置は終わりましたので、VirtualCPUのプロジェクトを参照を追加して、このTestDriverプロジェクトをスタートアッププロジェクトに設定してください。なお、コントロールの配置については記事付属のサンプルプログラムを参考にしてください。
次はテストドライバの実装の詳細について解説します。
