本屋さんで「機械のコトバ」という本を見つけました。
機械のコトバ 渡辺 徹 毎日コミュニケーションズ 2005-06 by G-Tools |
ここでいう「機械のコトバ」とは、機械語のこと。
ご存じの方も多いと思いますが、機械語というのは、CPUが直接解釈・実行できる
言語のことです。
厳密にはアセンブリ言語とは少し違うんですが、「アセンブラ」なんて呼ばれることも。
私も某社へ入社当時は、デバイスドライバや常駐プログラムなどをアセンブラで書いた
記憶があります。
最近は家庭用ゲーム機用ソフトの一部など、使われることは極端に少なくなりましたが、
CPUを動作させるための基礎ではあります。
ちょうどMacがPowerPCからIntelへ移行しようとしていますが、CPUが違えば、CPUが
理解する機械語も、当然異なってくるわけです。
そんな機械語のことを、できるだけ平易に、かつ、楽しく紹介してくれています。
機械語というのは、基本的には全て数字、それも最終的には2進数で表記
されます。
この本でも、2章全体を使って「みんな数字で表してみる」ことを説明してます。
数字はもちろん、文字、画像、音など、全部数字で表現するんですから、
ある意味、すごいですよね。
ちなみに、これに関連して「エンディアン」という単語を耳にすることがあるかと。
これは数値をメモリ中へ格納する時の、格納の向きのこと。
たとえば、普段、私たちは「1万」という値は「10000」と書きますよね。
言ってみれば、これはビッグエンディアンということになります。
逆にたとえば「00001」と格納するような方法をリトルエンディアンといいます。
PowerPCや680×0などは基本的にはビッグエンディアン、Pentiumなどの
x86系CPUはリトルエンディアンです。
G4はそのどちらにも対応していたんですが、G5がビッグエンディアンのみの対応で、
その影響もあって、Virtual PCのG5対応が遅れたことはご記憶の方もいらっしゃるかと。
ちなみに、画像フォーマットのTIFFは両方のエンディアンに対応しているのも
これら二つのCPUのタイプが存在することに関係してるんですよ。
ほかにも、「アルゴリズム」のことを『大馬鹿者に噛んで含めて説明する』
なんていう、なんとも的確な表現がしてあったりして、なかなか良い本です。
一応、本の中では特定のCPUに依存せず、「偽機械語」なるもので説明が
されています。
後半では、Z-80やPentiumについての解説もありますけれど。
その「偽機械語」のエミュレータとアセンブラも付属していますが、筆者のWebサイト
でも配布されてるようなので、試してみるのもよいかもしれません。
http://www.algolab.co.jp/~lum/pcnyumon/support/index.html
(当サイトでは、Amazonアソシエイトをはじめとした第三者配信のアフィリエイトプログラムにより商品をご紹介致しております。)