無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

バイナリをつつく13−データが引越しします

バサバサバサお待たせーバサバサバサバサバサバサバサバサバサバサバサバサ
前回は命令の解析部分を詳しく説明したから、今回はついに命令の実行について説明するよ。
ひとまず大まかな流れをもう一度書くと・・・

            【命令実行】

  • 1、cmds変数から命令をひとつデキューします。
  • 2、デキューしたCommand変数の値から実行する命令を決定する。
  • 3、各命令文を実際に実行するメソッドを呼び出す。
    今回の例の場合void Move(Command cmd)

となっているからそんなに難しくないのがわかってもらえると思う。
えっと1は説明の必要がないから2を説明するよ。
実行する命令を選ぶのは何が必要だと思う?
それは・・・・・・・命令の名前だ。
じゃあ、命令の名前はどこにあったのかというと Command構造体CommandNameプロパティだよ。
ここまで判ればあとは簡単。いつものようにswitch文で判定するだけだ。
次に3の命令の実行だけど、これはどの命令でも同じで、Command構造体を渡すだけなんだ。だから今回の場合Command構造体の引数を受け取るMoveメソッドを用意するだけなんだ。 簡単だろ?そのために冗長な構造にしているんだ。

おまけに、データの転送を行うMov命令の動作自体も簡単だよ。ただ単にCPUオブジェクトのレジスタプロパティに値を代入するだけ。本当にこれだけなんだ。 一見難しそうに見えるCPUのシュミレートも工夫次第で案外単純な処理に分解できるんだ。難しいことを難しいままやっても混乱するだけだからこれは重要な事だよ。難しい分野にトライする時は簡単に考える事からはじめるといいピヨ。効率を追及するのは後からの方がいいんだ。
次回はメモリの扱い方を突付くよ。どんどん完成に近づいているから楽しみにしてね。
じゃあねー、とぉー。
別窓 | バイナリ | コメント:0 | トラックバック:0 | ∧top | under∨
<<中の人の徒然草1 | 無差別に技術をついばむ鳥 | 中の人の徒然草>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |