EXAPUNKS

EXAPUNKS

Not enough ratings
リファレンスガイド日本語訳
By neznez
コマンドとレジスタ部分についてPDFから抜粋して日本語化しました
   
Award
Favorite
Favorited
Unfavorite
レジスタについて
X
汎用レジスタ。数値と文字列のどちらでも格納できる。

T
Xと同じく、汎用レジスタとして使用可能。数値と文字列のどちらでも格納できる。
ただし、TESTコマンドを使用するとその結果によって自動的に1か0が格納される。

F
EXAが所持しているファイルに対する読み書きの際に使用する。
EXAがファイルを掴んだ(GRABコマンド)とき、ファイル内に格納されている値の一番最初のものにカーソルがあたっている状態になる。
Fのレジスタから値を読むとき、そのカーソルがあたっている値が読まれる。
そして、Fへ書き込みをするときはカーソルがあたっている値に上書きされる。
読み込み・書き込みのどちらかを実行すると、カーソルは自動的に次の値へとうつる。
ファイル内の最後の位置にカーソルがある場合は、上書きせず新しく任意の値を書き込むことができる。

M
このレジスタは他のEXAへと値を転送することができる。
EXAがMに値を書き込むと、他のEXAがその値を読み込むまで送信スロットに格納される。
これにより、数値と文字列のどちらでも転送することができる。

EXAがMレジスタに値を書き込むと、他のEXAにその値が読み込まれるまで実行を一時停止する。
そして、EXAがMレジスタから値を読み込む際には、読み込み可能な値が格納されるまで実行を一時停止する。
もし同時に二つ以上のEXAがMレジスタから値の読み込みを実行したら、一つは成功するだろうがどれが成功するかは予測することができない。

初期状態では、EXAは他の場所にいるEXAとも通信ができる状態になっている。
これを同じホスト内のみの通信にしたければ、EXODUSインターフェースのglobal / localを切り替えることで、あるいはMODEコマンドを実行することで制限することができる。
globalモードのEXAは、たとえ同じホスト内にいたとしてもlocalモードのEXAと通信することはできない。
コマンドリスト凡例
R…レジスタ
R/N…レジスタ or -9999から9999の間の数値
L…MARKコマンドによって定義されたラベル
値を操作する
COPY R/N R
最初の値を二番目で指定したレジスタにコピーする。

ADDI R/N R/N R
最初の値と二番目の値を加算し、三番目のレジスタに格納する。
同様の構文では
SUBI
(減算)、
MULI
(乗算)、
DIVI
(除算)、
MODI
(剰余)がある。

SWIZ R/N R/N R
二番目に指定した値をスウィズルマスクとして一番目の値に適用し、結果を三番目に指定したレジスタに格納する。
このコマンドを使うことで、下記のように数字を並べ替えたり抽出することができる。
1番目 2番目 結果
6789 4321 => 6789
6789 1234 => 9876
6789 3333 => 7777
6789 1211 => 9899
6789 -4321 =>-6789
-6789 -4321 => 6789
6789 2000 => 8000
6789 0001 => 0009
分岐させる
MARK L
(このLは任意の値 MARKコマンドで定義するため初出のものでよい)
このMARKコマンドがある行をラベルとして定義する。

JUMP L
指定したラベルの場所へジャンプする。

TJMP L
Tレジスタの値が1、(あるいは0以外の値)だった場合に指定したラベルの場所へジャンプする。
この値はTESTコマンドの結果がtrueだった場合に自動的に格納される。

FJMP L
Tレジスタの値が0だった場合に指定したラベルの場所へジャンプする。
この値はTESTコマンドの結果がfalseだった場合に自動的に格納される。
値の判定
TEST R/N = R/N
一番目の値と二番目の値を比較し、同じであればTレジスタに1を、そうでなければ0を格納する。
同様の構文で=の位置に<(より小さい)、>(より大きい)を適用することができる。
(文字列同士の比較の場合はアルファベット順によって大か小かを判定する。また、文字列と数値の比較の場合はどの結果もfalseとなる)
ライフサイクル
REPL L
この命令を実行するEXAのコピーを作成し、作られたEXAは指定したラベルへとジャンプする。
もしファイルを持っているEXAがこのコマンドを実行した場合、ファイルはコピーされずにオリジナルのEXAが所持し続ける。

HALT
この命令を実行するEXAを終了させる。もしファイルを所持していた場合は、その場に置いてから終了する。

KILL
同じホスト内にいるEXAを終了させる。同じユーザ-に作成されたEXAを優先し、もし該当のEXAが複数いる場合はランダムに一機を終了させる。
移動
LINK R/N
指定されたIDの接続を渡る。

HOST R
指定したレジスタに現在地のホスト名を格納する。
通信
MODE
Mレジスタのglobalとlocalモードを切り替える。

VOID M
Mレジスタの値を読み込み、破棄する。

TEST MRD
もしこの命令を実行するEXAが他のEXAから待機することなく(Mレジスタから?)読み込むことができたら、Tレジスタに1を格納し、そうでなければ0を格納する。
ファイル操作
MAKE
ファイルを作成し、所持する。

GRAB R/N
指定したIDのファイルを掴む(所持する)。

FILE R
所持しているファイルのIDを指定したレジスタに格納する。

SEEK R/N
ファイル内のカーソルを先へ(正の値)あるいは後ろへ(負の値)指定した数だけ進める。
もしSEEKコマンドで指定した値を進む前にファイル内の始まり、あるいは終わりに到達した場合、そこでカーソルは停止する。
値を-9999か9999に設定すればファイルの最初か最後に確実に移動することができる。

VOID F
所持しているファイルの中のカーソルがあたっている値を消去する。

DROP
所持しているファイルを手放す。

WIPE
所持しているファイルを消去する。

TEST EOF
もし所持しているファイルのポインタ(カーソル?)がファイルの最後にあった場合、Tレジスタに1を格納し、そうでなければ0を格納する。
その他
NOTE
このコマンドを書いた行は何を書いたとしても動作に影響を及ぼさなくなる。
コメント機能。

NOOP
1サイクルの間、何もしない。

RAND R/N R/N R
一番目に指定した値と二番目に指定した値の間の中でランダムな値を生成し、三番目に指定したレジスタに格納する。