SHOEISHA iD

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

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

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

VB.NETで仮想CPUを作ろう (7) - ADD命令実装

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

本稿では、VB.NETを利用し、簡単な機械語で動く仮想CPUを作ることでバイナリプログラミングを満喫します。実際の業務で直接使えるケースは少ないと思いますが、デバッグやプログラミングの地力向上に役立つでしょう。今回はADD命令を実装する事によりCPUの理解を深めます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この連載ではVB.NETの初歩的な記法だけを使って、簡単な機械語で動く仮想CPUの実装法を解説します(※CPUにもいろいろありますが、この記事ではIntel社が製造しているCPUを対象とします)。その過程を通じて、初心者でもバイナリプログラミングが楽しめることと、バイナリプログラミングの魅力を伝えたいと思っています。

 今回はADD命令の実装を通じてCPUの理解を深めます。

これまでの連載

下準備

 前回の実装を拡張していきますので、あらかじめ前回までの部分の実装を済ませておいてください。後は専門用語とCPU構造の確認のため、前回用意した3つのIntel社のマニュアルをすぐ読める状態にしてください。

 それに加えて、『中巻 B: 命令セット・リファレンス N-Z』(PDF)のA-6とA-7ページを印刷しておくことをお勧めします。絶対に必要なことではありませんが、この表をあらかじめ印刷しておき、その紙を参照しながら実装作業をすると効率が良くなります。

前置き

 まずは、四則演算について説明します。機械語で四則演算をするには、ADD(加算)、SUB(減算)、MUL(乗算)、DIV(除算)の四個の命令が用意されています。今後の連載では、この四個の命令を実装していきます。

 今回はADD命令を実装していきます。

※注
 この四個の命令以外にも、符号を考慮する命令、浮動小数点演算専用の命令など色々存在しますが、説明を簡易にするために、断りがない限り本稿で四則演算と言えばこの四個の命令を指すものとします。

ADD命令実装の大まかな流れ

 ADD命令を実装するには、バイナリから命令を判別するためのSearchOpeCodeMapメソッドと、実行部分を実装したExecuteCommandメソッドに、少し変更を加え、ADD命令そのものを実装するためにAddメソッドを追加します。そして最後に、IntelCpuクラスの利便性を良くするための工夫をします。

次のページ
SearchOpeCodeMapメソッドの変更点

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
VB.NETで学ぶ機械語の基礎連載記事一覧

もっと読む

この記事の著者

インドリ(インドリ)

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2895 2010/04/27 12:01

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング