MIX とは、ドナルド・クヌースが著書 "The Art of Computer Programming" ("TAoCP") で使った仮想計算機である。1960年代に生まれた MIX は、今後の "TAOCP" の版では MMIX という新たな(仮想の)コンピュータアーキテクチャで置換される予定である。MIX と MMIX のソフトウェア実装(MIXware および MMIXware)はクヌースが開発しており、自由に利用可能となっている。クヌースの MIX/MMIX エミュレータからの派生版も存在する。GNU MDK がその一例で、フリーソフトウェアとして幅広いプラットフォーム上で動作する。TAoCP 本文中の記述によれば、MIX は「世界初の多機種複合型コンピュータ」で、型番は MIX という綴りをローマ数字として解釈したものと同じ 1009 であると設定されている。この数は「MIX によく似ていて MIX を簡単にシミュレートできる実在のコンピュータ 16 種」の型番から取って平均した(mixした)ものであるとあるが、具体的にその機種を検討してみるとかなり恣意的であり、このラインナップについてはこじつけと見てよいであろう。MIX は二進法と十進法のハイブリッド型コンピュータである。二進法でプログラムする場合、各バイトは6ビットで構成される(値は 0 から 63 まで)。十進法では、1バイトは2桁の十進数字で構成される(値は 0 から 99 まで)。5バイトと符号で1ワードが構成される。MIX 用プログラムの多くは二進法でも十進法でも動作する(1バイトに63より大きい値を格納しようとしない限り)。1ワードで表せる範囲は、二進モードでは −1,073,741,823 から 1,073,741,823 まで(これらの値を含む)、十進モードでは −9,999,999,999 から 9,999,999,999 まで(これらの値を含む)である。符号-仮数表現であるため、MIX では “−0” と “+0” が表現上区別される。これは、現代のコンピュータの多くが採用している2の補数表現とは大きく異なる点であり、後者ではゼロの表現は一つである。また、後者では負の数値のほうが一個だけ正の数値よりも多く表現できる。MIX ではレジスタは9本存在する。バイトは最低でも6ビットで構成される。命令ではバイト単位にレジスタ上の操作位置を指定でき、"(first:last)" の形式で表される(命令の修飾部)。0番目のフィールドは1ビットの符号を指す。MIX では、直前の操作によってオーバフローが発生したかどうかを記録するフィールドと、比較結果を3種類の値(大きい、等しい、小さい)で示すフィールドも持っている。以下の図では、各レジスタをフィールドに分割して表示している。MIXマシンには、4000ワードのストレージ(メモリ)があり、アドレスは 0 から 3999 までである。以下のような各種入出力機器も含まれる。各命令はメモリ上の1ワードに格納され、4つの部分から構成される。メモリアドレス部(2バイトと符号ビット)、インデックス指定部(1バイト、rIx レジスタの番号を指定)、修飾部(1バイト)、命令コード(1バイト)である。修飾部はアドレス指定されたワード内のフィールド位置の指定に使われる。全ての命令コードにはニーモニックが対応している。MIX では自己書き換えコードをよく使う。特にサブルーチンからの自動復帰機能(リターンスタック)が命令セット上考慮されていないので、その場合も自己書き換えコードを使う。自己書き換えの際には、命令の中の修飾部を駆使して、命令ワード内の特定の部分だけを書き換える(例えば、アドレス部だけを書き換えるなどする)。MIXプログラムを書く場合、MIXAL というアセンブリ言語を使う。MIXAL のコード例は、Hello worldプログラムの一覧#MIXALにある。なお、シフト命令を見てもわかるとおり、MIXではバイトの内部構造が影響するような命令を持たない(例えばビット演算)。このため、二進法でも十進法でも同じプログラムが動作するのである。
出典:wikipedia
LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。