Posts Tagged ‘プログラミング’
CPUとは何をするの?
CPUは日本語では中央演算装置と呼びます。
さて、いったいこれは何をするのでしょうか?
6502CPUを例にして、動きを解説します。
- 指定されたメモリの場所(これを番地と呼びます。最初は8000番地とします。)から、1バイト(つまり8ビット)文のメモリ内容を読み込みます。
- 読み込んだ値が、6502が持っている命令番号表に合致するかチェックします。
- 命令番号と合致しなければ、なにもできずその場でフリーズ!
- 合致すれば、処理する命令は決まりました。この命令を処理するために必要な付属データがある場合、8001番地の付属データを読み込みます。(なければ読み込みません)
- 命令番号と付属データを使って、命令を実行します。
- 読み込むメモリ番地を順次増やしながら1に戻って処理を繰り返します。
実は、これだけなんです。
どのCPUでも基本的に同じです。
命令番号は「オペコード」と呼び、付属データは「オペランド」と呼びます。
命令によってはオペランドを必要としない場合もありますし、逆にオペランドを2バイト以上必要とすることもあります。
つまり、アセンブリ言語のプログラムは、必ず1つの命令コード+0個以上の付属データを1セットとして成り立っているのです。
これを流れにそって書けばゲームもできてしまいます。
CPUがやっていることは、実は単純なんです。※1
ただし!ここからが注意するポイントです。
CPUは「単純」ですから、気を利かせてはくれません。
もしも、実行を開始する番地を1バイト間違えば、まともには動きません。
1ビット間違えただけでも、まともに動きません。
大抵はフリーズしてしまいます。
CPUには「キチン」と指示してあげなければダメなんです。
あなたも、一度CPUに触れてみませんか?
お待ちしております。
※1 もちろん最新のCPUがまったく同じということではありません。
処理の高速化のため、いろいろなテクニックがあるからです。
しかし、基礎はまったく同じです。
プログラミング初級講座で使用する6502CPUについて
プログラミング初級講座では、6502というCPUの勉強を行います。
日本ではZ80、68000やインテル8086シリーズが人気でしたが、6502は良く知られていません。
「6502ってなんだ?なんでそんなCPU勉強するの?」
という疑問が数多く寄せられたため、チョットだけ解説いたします。
この、6502というCPUは1975年に発表された8ビットCPUです。
ずいぶん古いCPUですね。
しかも今は64ビットCPUが当たり前ですから、ずいぶんと小さなCPUです。
能力も今のものと比べると、「静止している」くらいに遅いです。
では、なぜ35年も前の古いCPUをつかうのかというと、それなりの理由があります。
- 世界最初のパーソナルコンピュータ APPLEⅡに採用されたCPUである
- 任天堂ファミコンに採用されたCPUである
- NEC PCエンジンに採用されたCPUである
- 命令や機能がシンプルで、学びやすい
- メモリアクセス方法が多いため、「メモリ」を活用する意識をつけられる
- メモリが少ないため、「アイデア」で勝負できる
このCPUには、乗算や除算の命令すらありません。
自分で作るのです。
アイデアは、制約が強いほど生まれやすいものですから、
感性によっていろいろな作品が生まれます。
6502CPUを学べば、コンピュータの基本を習得でき、最新CPUでも理解することが楽になります。
実は6502CPUは今でも残っているのです。
皆さんが持っている携帯電話、iPod,iPhoneやニンテンドーDS。
これらには、ARMというCPUが搭載されています。
このARMこそ6502を元に作られたCPUなのです。
また、6502はアメリカ・カーネギーメロン大学の講義でも使われたこともあり、
勉強用には最適なCPUです。
6502CPUを学び、コンピュータへの理解を深めてみませんか?