何故か、仕事でARMのアセンブラを見るはめになった。
アセンブラ
アセンブラっていうのは、一般的にソフトウェアを作るときに人が書くC言語というものと、コンピューターが直接理解できる機械語の中間にあたります。
コンピューターっていうのは、どんなに頭が良くなった今でも、0と1しか分かりません。
0と1の組み合わせで、何をしなければいけないのかを認識します。
2進数
0と1で表現する数値を2進数と言います。
私達が普段使っているのは、10進数です。
10進数は、9の次は繰り上がって10になりますね。
2進数の場合は、0の次で繰り上がって、10になります。10に1を足すと11
11に1を足すと、100とさらに繰り上がります。
これを繰り返していくと、8桁の2進数では、11111111。10進数でいうところの255です。
それぞれの1とか0に変化する各桁をBit と表現するので、この8桁の2進数が8ビットと言います。
パソコンは32ビットが主流
最近のパソコンでは、32ビットだとか64ビットとか言われます。
要は、この2進数でいうところの1が32個同時に並んだ数を一度に処理できるのが、32ビットパソコンです。
32ビットの世界では、1111111111111111・・・(32個並びます)
8ビットでは、0から255まで認識できましたが、
32ビットの世界では、0から4,294,967,295までの数字が扱えるようになっているのです。
16進数
さすがに1を沢山並べるのは、面倒なので16進数というのを使います。
10進数は、0から9までで数字を表現していますが、16進数では0から9とA、B、C、D、E、Fまでを組み合わせて数字を表現します。
16進数でいうところの F が、10進数でいうところの 15になります。
ちょうど、2進数の4ビット分、1111と同じです。
8ビットの世界では、FF
16ビットの世界では、FFFF。32ビットではFFFF FFFF。
64ビットならFFFF FFFF FFFF FFFF
これを利用すると、10進数で40歳は、16進数で28歳です。
誰かに年齢を聞かれたら、16進数で答えてあげましょう。若く見えます。
現在、私は2F歳なので、すぐにバレてしまいます。
そんなときは、来年30歳ですと言いましょう。
8ビットの世界で動いているもの
初代の任天堂ファミリーコンピューターは、8ビットの世界で動いています。
すごい時代の進化ですね。
ただし、今でも電化製品や自動車の一部の部品では、8ビットや16ビットの世界で動いているものが沢山あります。
ファミリーコンピューターは、8ビットの世界で動いているので、画面のサイズは255を超えると大変。色の数も255種類。画面の部品の種類も255種類と、いろいろなところで255という制限の中でゲームが作られています。
初代のポケモンのレベルのマックスが255なのも、これが理由です。
16ビットのアセンブラは、見るのが大変。
8ビットの世界では、コンピューターに命令する種類も255しかありませんので、頑張ればなんとかなります。
私が今日みていたアセンブラは、16ビットで動いているのですが、もう訳がわかりません。
命令も多いし、複雑だし、突然16ビットを2つ使って32ビットにしてみたりします。
32ビットの世界では、数字が大きすぎて、もう手に負えないですね。
おまけ
64ビットで絵を書いてみました。
8ビットの世界だと、使えるのが8個しかありませんので、こんな適当な絵を書くのも大変です。