ターミネーターが服を奪う人物を物色したり、逃げたサラ・コナーを追い掛けるためにクルマを運転したりするシーンでは、ターミネーターの視線が描かれる。この映像はまるで、開発者がよく目にする今日のAI技術の確認用可視化画面のようだ。
その映像にはプログラムが実行されているような文字がいろいろと表示される。例えば、サラを追い掛けるシーンでは、下記の文字列が表示された。
LDA #PG3VEC STA STY LDY SEC JSR SETUP = move data for VTOC and catalog to auxmem at B000 - B3FF (pseudo trk 11 0 - 3) SETUP LDA #<VTOC STA A1 LDA #>VTAC STA
「小難しそう」なこの文字列はいったい何を意味しているだろうか。
私のような古株ソフトウェア技術者なら、これらの文字列は「ニーモニック(mnemonic)だ」とすぐピンとくる。ニーモニックとは、アセンブラ言語というプログラミング言語の一種の命令表記方法のことだ。
少しだけアセンブラ言語の仕組みを解説しよう。
今日のコンピュータ(計算機械)は、データの一部として処理命令を読み込み、その処理命令を順番に実行することで動作する。処理命令がたくさん並んだものを「ソフトウェア」といい、「プログラム」ともいう。
プログラムは、コンピュータの命令がたくさん並んだデータであるが、このデータのことを「機械語」または「マシン語」という。基本的に「バイナリーデータ」(0か1)であり、0か1を表す単位を1「ビット」という。実際にはプロセッサは4,8,16,32,64,128ビットといった組み合わせで処理する。0と1を並べたものは人間が読みにくいため、4ビットを0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fの16文字で表現できる16進数で表記する。0a8bとかいうと、2バイト16ビットということだ。
ちなみに、私がよく知る「IBM System/360」の命令なら、1A23(System/360では文字を大文字で書く)なら、「AR R2,R3」(Add Register)命令で、レジスター2番の値にレジスター3番の値を足し算しレジスター2番に入れる、というものである。この「AR」がニーモニックだ。ニーモニックは、計算機の処理内容を人間が分かりやすいように文字化したものだ。本来はマシン語だけがあればコンピュータは動作するが、これを人間がいきなり作るのは難解な作業になる。筆者は学生時代にマシン語でプログラミングしていたことがあるが、とても大変だった。
マシン語を直接書かず、ニーモニックとそれに付随する記号(オペランドという)を書けば、マシン語が生成される専用プログラム「アセンブラ」が作られた。記号で書くものは「ソースコード」と呼ばれる。そのようなソースコードをマシン語に変換するプログラムをアセンブラといい、そのようなソースコードを書く記号の書き方を「アセンブラ言語」という。アセンブラとは「組み立てる」という意味の「アセンブル(assemble)」から由来している。このアセンブラ言語の、命令を表記するための記号が「ニーモニック」だ。マシン語とかアセンブラとか「古臭い」というITエンジニアもいるだろうが、今日の最新のコンピュータも、中身はこういうものでできている。CPU、メモリ、プログラムの関係は変わっていない「ノイマン式」だ。
その後、より人間の言葉(ほぼ英語)に近い「高級言語(High Level Language:HLL)」が米国海軍のグレース・ホッパー氏の功績により登場するが、ここでは直接関係ないので言及を避けよう。COBOL、FORTRAN、PL/I、C/C++、SmallTalk、Java、JavaScript、PHP、Ruby、Pythonなど、列挙すればキリがない。そういったもので、マシン語、アセンブラ言語のようなものを「まんじゅうの皮」のようにくるんでいるにすぎない。人間の脳でいえば、マシン語やアセンブラ言語が視床下部や小脳で、高級言語や大脳皮質のような関係かもしれない。
マシン語とアセンブラ言語は、コンピュータのアーキテクチャによって全く違うものである。コンピュータにはさまざまな流派があり、性能、価格、プログラミングのやりやすさ、機能などでメーカーから選択されてきた。今日、PCで最も広く使われているコンピュータアーキテクチャは、Intel x86かARMから派生したものではないかと思う。
さて、ターミネーターはどうだろうか。そのヒントが、先ほどの文字列に隠されている。プログラムのごく短い断片でしかないため、これらが何を目的に組まれたプログラムなのかを読み取ることは困難だが、LDA、LDY、STA、STY、SEC、JSRといった文字列をニーモニックと考えると分かることがある。
これらのニーモニックを使っていた1984年当時のコンピュータは、年代から考えるとモス・テクノロジー社の「MOS6502」である。特徴はLDYで、これは「Load Index Y」という命令で「インデックスレジスターYにデータ(通常はアドレスかページ番号)をロードする」という命令である。
LDAはLoad Accumulator A、STAとSTYはストア命令、SECはキャリーフラグのリセット命令、JSRはサブルーチンの呼び出し命令だ。MOS6502は、モトローラ6800プロセッサの後継としてモトローラから独立したチームが再設計したもので、このインデックスYレジスターを持っていることが特徴である。
ここで重要なことは、このMOS6502プロセッサを搭載していた製品として「Apple II」があることだ。Apple社は今日、総資産額世界最大級の大企業であるが、世界で初めて「ホームコンピュータ」を発売した企業でもある。その最初の製品がApple IIであり、そのコンピュータが採用していたプロセッサが、MOS6502なのだ。
同じプログラム言語で書かれたソフトウェアを、発展形の後継のプロセッサでも実行できたり、プログラミングできたりすることを「互換性がある」という。このため、ターミネーターのプロセッサは、MOS6502のプログラムと互換性がある可能性がある。
ターミネーターT-800は、Apple IIのプロセッサと互換性のあるプロセッサを使っている可能性がある。サイバーダイン社はもしかして……!!?
Copyright © ITmedia, Inc. All Rights Reserved.