Goldensteps

個人ブログです 意義はないです カテゴリー「長文読み物」がオススメですよ

『EXAPUNKS』PDFマニュアル1冊目の簡易訳~17pまで

本エントリでは1冊目(赤い方)の17ページ目まで進行します。

18~20pは本作の重要なネタバレ要素が含まれる為、翻訳は行いません。

◆AXIOM EXA Language Reference Guide

EXA仮想マシン(EXA-VM)を使用すると、多くの実行エージェント(EXA)をホストコンピュータの共有ネットワークで実行できます。ネットワーク内では、あるホストから別のホストへEXAを動的に作成、破棄、転送することができます。EXA-VMを使用すると、複数のEXAが同じホスト内にある場合でも、すべてのEXAを独立して同時に実行できます。

EXAのプログラムは、一連の命令で構成されています。各命令は、0個以上のオペランドを必要としています。各命令で必要とされるオペランドは、短い略語を使用して指定されます。

REGISTERS

R レジスタ
R/N レジスタ、または-9999~9999の数値
L MARK擬似命令で定義されたラベル

X
Xレジスタは、汎用の記憶レジスタであり、番号またはキーワードを格納することができます。

T
Tレジスタは、汎用の記憶レジスタであり、番号またはキーワードを格納することができます。これはTEST命令の宛先でもあり、条件付きジャンプ(TJMPおよびFJMP)の基準です。

F
Fレジスタを使用すると、EXAは保持しているファイルの内容を読み書きできます。EXAがファイルを取得すると"ファイルカーソル"がファイルの最初の値に設定されます。Fレジスタから読み出すと、カーソルの示す値が読み込まれます。Fレジスタへの書き込みはこの値を上書きします。Fレジスタを読み書きすると、ファイルカーソルが自動的に前進します。ファイルの最後に書き込むと、上書きするのではなく新しい値が追加されます。

M

Mレジスタは、EXAの「メッセージ受け渡し機能」を制御します。EXAがMレジスタに書き込むと、別のEXAがMレジスタから読み込み、前に書き込まれた値を受け取るまで、そのEXAの出力メッセージスロットに値が格納されます。この方法で数字とキーワードの両方を転送することができます。

EXAがMレジスタに書き込むと、その値が別のEXAによって読み取られるまで実行を一時停止します。EXAがMレジスタから読み出すと、値が読み込み可能になるまで実行を一時停止します。2つ以上のEXAが同時に別のEXAから読み取ろうとすると(またはその逆)、1つは成功しますが、どちらが成功するかは予測できません。

デフォルトでは、EXAは同じネットワーク内の他のEXAと通信できます。これは、EXODUSインタフェースのグローバル/ローカル設定を切り替えることによって、またはMODE命令を実行することによって、同じホスト内のEXAに限定することができます。グローバルモードのEXAは、同じホストにあってもローカルモードでEXAと通信できません。


HARDWARE REGISTERS
EXA-VMを実行しているホストの中には、接続されたハードウェアに存在するハードウェアレジスタへアクセスできるものがあります。ハードウェアレジスタの有効な名前は、#POWRや#ENABなど「#を頭にした4つの文字」という構成です。ホストの設定によってハードウェアレジスタは読み書き可能、読み込み専用、または書き込み専用などがあります。


INSTRUCTIONS

Manipulating Values

COPY R/N R
最初のオペランドの値を2番目のオペランドにコピーします。

ADDI R/N R/N R
第1オペランドの値を第2オペランドの値に加算し、その結果を第3オペランドに格納する。
SUBI(減算)、MULI(乗算)、DIVI(除算)、およびMODI(除算)命令でも同じ構文が使用されます。

SWIZ R/N R/N R
第2オペランドの値をスウィズルマスクとして使用して第1オペランドの値をスウィズルし、その結果を第3オペランドに格納します。swizzle命令を使用すると、次のような数字の並べ替えを行ったり、抽出したりすることができます。


Branching

MARK L

指定されたラベルでこの行をマークしてください。MARKは擬似命令であり実行されません。

JUMP L
指定したラベルにジャンプします。

TJMP L
Tレジスタが1(または0以外の値)の場合は、指定したラベルにジャンプします。これは、真であったTESTの結果に相当します。

FJMP L
Tレジスタが0に等しい場合、指定されたラベルにジャンプします。これは、TEST結果が偽であったことに対応します。


Testing Values

TEST R/N = R/N
第1オペランドの値と第2オペランドの値とを比較します。等しい場合はTレジスタを1に設定し、そうでない場合はTレジスタを0に設定します。「<」(より小さい)および「>」(より大きい)テストでは同じ構文が使用されます。


Lifecycle

REPL L
このEXAのコピーを作成し、コピー内の指定されたラベルにジャンプします。
EXAがREPL命令を実行するときにファイルを保持している場合、ファイルはコピーされず、元のEXAによって保持されたままになります。

HALT
このEXAを終了します。ファイルを保持していた場合、ファイルはドロップされます。

KILL
このEXAと同じホストで別のEXAを終了し、同じユーザーが作成したEXAに優先順位を付けます。可能なターゲットが複数ある場合、ターゲットは予測不可能な方法で選択されます。

 

Movement

LINK R/N
指定されたIDでリンクを移動します。

HOST R
現在のホストの名前を指定されたレジスタにコピーします。


Communication

MODE
グローバルモードとローカルモードの間でMレジスタをトグルします。

VOID M
Mレジスタから値を読み出して破棄します。

TEST MRD
このEXAが一時停止せずに別のEXAから読み取れる場合は、Tレジスタを1に設定し、そうでない場合はTレジスタを0に設定します。


File Manipulation

MAKE
新しいファイルを作成して保持します。

GRAB R/N
指定したIDのファイルを保持します。

FILE R
保持しているファイルのIDを指定されたレジスタにコピーします。

SEEK R/N
指定された数の値だけファイルカーソルを前方(正)または後方(負)に移動します。
SEEKがファイルの先頭または末尾までファイルカーソルを移動すると、代わりにクランプされます。したがって、-9999または9999の値を使用して、ファイルの先頭または末尾に確実に移動することができます。

VOID F
現在保持されているファイルからファイルカーソルで強調表示されている値を削除します。

DROP
現在保持されているファイルをドロップします。

WIPE
現在保持されているファイルを削除します。

TEST EOF
ファイルポインタが現在保持されているファイルの最後にある場合は、Tレジスタを1に設定し、そうでない場合はTレジスタを0に設定します。


Miscellaneous

NOTE
NOTE擬似命令に続くテキストは、コンパイル時に破棄され、コードを記録するための「コメント」の書き込みに使用されます。

NOOP
1つのサイクルで何も実行しない。

RAND R/N R/N R
第1オペランドと第2オペランドの間に乱数を生成し、その結果を第3オペランドに格納します。