プログラムの話 メモリーのアドレス
パソコンを購入する時に、メモリーの容量は大事な判断材料です。そのメモリーの構造について今回は紹介します。
1.メモリーにはアドレスがある
メモリーにはアドレスが付いています。昔の8ビットパソコンの主力機種には、たったの64kバイトしかメモリがありませんでした。そして、1バイトごとに番地が振り分けられていました。(0xは16進数を表します。また、番地に入っている値は例であって意味はありません)
0番地 0x30
1番地 0x31
2番地 0x32
・
・
FFFF番地 0xC9
という風に65536(0xFFFF)個の番地があって、1バイトの値が格納されていました。今の64ビットパソコンのメモリーは、8ビットパソコンよりもずっと容量が大きいですが、アドレスがあって1バイトが格納されているという形は変わりません(1アドレスが1バイトではない例外もありますが、アドレスがあることは変わりません)。
2.アセンブラ言語では、アドレスを指定して値をセットできた
アセンブラ言語では、アドレスに直接値を入れることができました。
LD (1000H) A
1000番地にAレジスタの値を入れますという命令です。このように、8ビットパソコンのアセンブラプログラムでは、アドレスを意識してプログラムをしていたのです。
これは8ビットパソコンだからできたわけで、16ビット以上でアドレスを意識してプログラムをしていたら、完成までに途方もない時間が掛かるでしょう。そのため、人間が分かる文法でプログラムを組むようになりました。
組んだプログラムは、コンパイルによりビットの塊になり、コンピューターが理解できる形に変更されます。現在のアプリケーションは複雑な構成ですが、最終的にはビットの塊になります。
3.C/C++言語は、アドレスが分かるが自分でアドレスは指定しない
C/C++言語もアドレスを扱う言語なのですが、アドレスを指定することはありません。
char *moji ;
moji = new char [3] ;
moji変数にはアドレスが入るのですが、アドレスは自動で振り分けてくれるので、プログラマが指定する必要はありません。そして、アドレスから3番地分を領域として確保しています。
昔はメモリーの量が少なかったため、必要な時だけメモリーを確保して、必要がなくなったら開放する必要がありました。アセンブラやC/C++言語を使う必要があったのです。
今はメモリーに余裕があるので、いちいち確保して開放する必要がなくなりました。また、その確保と開放もプログラム言語側が最適に行ってくれるので、プログラマの負担は小さくなっています。
しかし、何も考えずにプログラムを組むと、無駄な処理で動作が遅かったり、メモリーを多く使ってしまって動作が遅くなるなどの弊害が出ます。やはり、基本をマスターして、効率の良いプログラムの作成を心掛けなければなりません。