2010年6月22日火曜日

マシン語(アセンブラ)とCPUの知識

Yahoo!知恵袋に投稿した内容です。


これはC言語ではなくマシン語(アセンブラ)やコンピュータの知識ですね。

まず
  • アキュムレータ
    ですが、CPUが計算を行うときに使うメインの変数です。 ほとんどの命令はアキュムレータを介して計算を行います。 何故、アキュムレータだけ優遇されているのかと言うとCPUの配線を単純化するためです。
  • 命令レジスタ
    CPUが命令を実行するときに命令自体を保持しておくレジスタ(変数)です。
  • プログラムカウンタ
    プログラムの何処を実行しているのか保持しているレジスタです。
  • フラグレジスタ
    直前の計算が桁あふれなどをした場合に、状態を記憶しておくレジスタです。
  • 演算ユニット
    計算を行う部分です。
  • スタックポインタ
    レジスタはC言語の変数と比べると非常に少ないです。 このために複雑な計算を行うためには一度メモリへレジスタの内容を避難させる必要があります。 この避難場所を覚えて置くのがスタックポインタです。 CPUによってはジャンプ元のアドレスの場所を覚えて置く機能と兼用されます。


一連の動作
  1. CPUはプログラムカウンタが示すアドレス上の命令を命令レジスタへ収納します。
  2. 演算ユニットは命令レジスタに収納されている命令を実行します
  3. この場合アキュムレータの値が計算や処理に使用されます。
  4. 桁あふれなどが発生した場合、フラグレジスタに内容が記録されます。

何らかの処理のためレジスタを使いたい場合、Push等の命令が実行されるとレジスタの内容が、スタックポインタで示されているアドレスへ待避されます。

文章だけを読んでもあまりピンとこないと思いますので、一度アセンブリ言語でプログラムを組むことをおすすめします。 ワンボードコンピュータがあればなお勉強がしやすいです。

書かれている記事
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1242623522

0 件のコメント:

コメントを投稿