前回、マシン語についてすこしだけふれたが、
自分の中では、マシン語とハードウエアの関連性についてさほど知識があるわけではない。
論理回路がハードウエアと中小的な理論をむすびつける橋となっていることがわかったとき
少し、論理回路を勉強したことがある。
論理回路入門
And, ORなどの回路から、加算機をつくることができ、加算機をもとにして乗除の回路もできあがる。
そして、信号の流れ(電気の流れ)は、あたりまえだが入力側からはいって出力に出ていく。
ただ、入力からはいってきた電気は、細かに枝分かれして同時進行でそれぞれの回路で、並列処理されていく。
そして、マシン語は、0〜Fの16進数であらわされるが、最終的には二進数に変換されて使われる。
マシン語がどのようにハードウエアに解釈されていくのか。
のあたりはもっと勉強が必要だが、
自分なりの解釈をまとめてみた。
16進数のそれぞれの文字がコードに対応している。
そしてそのコードは二進数の電気情報としてコンピュータ内に保存されている。
その信号がCPUのどの部分にながれていくかは、綿密に制御されている。
あたまを示す信号。
あたまからいくつ目は、順番を表す信号
その中身(コマンド、データ)
etc.....
すべてのタイミングは、周波数によってコントロールされる。
命令は二進数の電気信号で、あらわされ、それは命令のラインへ流される。
ながされた電気信号は回路内でつぎつぎ、トランジスタの連鎖反応をおこし、
はいってきたデータの電気信号を処理する。
そしてその結果をトランジスタのON/OFFにおきかえ、また電気信号として出力される。
文章で書くと非常に分かりにくいが、じっさい演算装置とは複雑な回路で、
すべてが絶妙のタイミングで高速に稼働している。
ここまでを考えただけで、いままでにかかわってきた人たちの知識のつみかさねが
なければ到底達成できない複雑な装置であることは理解できた。
それらの一部は電気回路によってタイミングがはかられ、
回路の処理能力によって量が制限される。
そして,それは、一連の電気信号の流れなのだと理解した。
コンピュータ内部の処理は、電気回路によって、タイミングがはかられている。
そのタイミングで、どんな二進数のかたまりをほうりこむかを
プログラムで決める。
ある一定の順番でどこからどこまでがコマンドでどこからがデータかを
わけるのも回路によっておこなわれる。
人間はそのきまりにしたがって二進数のならびを作る。
それがプログラミングである。
そしてそれを16進数とアルファベットになおしたものがマシン語であり、アセンブラ言語である。
ここで二進数の電気信号のならびと、いう物理的なものが英数字という記号的、抽象的
な概念におきかわる。
以後、高級言語とよばれるプログラミング言語の開発により、抽象的な人間の言語に近づいた。
よするにプログラミングとは抽象的な考えを扱うのでひとつひとつが明確にわかっていないと混乱するし、
ハードウエアの制御が根本の目的なので、ハードウエアがもっている逐次性からはのがれられない。
0 件のコメント:
コメントを投稿