SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

VB.NETで学ぶ機械語の基礎

VB.NETで仮想CPUを作ろう (3) - 仮想CPUのGUI化

VB.NETで学ぶ機械語の基礎 第3回

ダウンロード VirtualCPU3.zip (193.3 KB)

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プロジェクトをスタートアッププロジェクトに設定してください。なお、コントロールの配置については記事付属のサンプルプログラムを参考にしてください。

 次はテストドライバの実装の詳細について解説します。

次のページ
テストドライバの内容

この記事は参考になりましたか?

VB.NETで学ぶ機械語の基礎連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

分析・設計・実装なんでもありのフリーエンジニア。ブログ「無差別に技術をついばむ鳥(http://indori.blog32.fc2.com/)」の作者です。アドバイザーをしたり、システム開発したり、情報処理技術を研究したりと色々しています。座右の銘は温故知新で、新旧関係なく必要だと考えたものは全て学...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2769 2010/04/27 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー