→をクリックすると非真理設定が非表示になります。ページを再読み込みすると戻ります。
kRz
命令最もよく使う命令として、kRz
命令があります。これは値を[書き写す](kRantairzarth)命令で、[メモ](firjal)や[住所箱](setistafar)の間で値を書き写す作業を行うことができます。
例えば、kRz f0 f1
と書くと、f0
[を](-'i)読んでf1
[に](-'c)書き写せ、という命令になります。この際、f1
は完全に上書きされ、元のf1
の値は失われます。先頭に動詞、次に「[を](-'i)」、最後に「[に](-'c)」を置くのが基本的な書き方です。AT&T Syntaxですな
(なお、先に「[に](-'c)」が来てその後に「[を](-'i)」が来る言語を話している人のために、先頭に'c'i
と書くことでそれ以降の部分を全て「[に](-'c)の後に[を](-'i)」の語順として扱わせることができます。Intel Syntaxに慣れているみなさんも一安心もとに戻す場合は'i'c
と書きます。混乱を避けるため、この解説では一貫して'c'i
の使用を控えます。)
例として、f0
の値をf1
に複製した後、f1
の値をf2
に複製する命令列は以下のようになります。
kRz f0 f1 kRz f1 f2
これを実行すると、もともとf0
に入っていた値がf1
にもf2
にも入ります。
なお、「もともとf0
に入っていた値」とは具体的にどんな値なのでしょう?分かりません。これに限らず、明示的に値を設定していない[メモ](firjal)にはどんな値が入っているのかは一般に分かりません。現世流に言うなら「未初期化のレジスタにはゴミが入っている」
順番を逆にして、
kRz f1 f2 kRz f0 f1
とするとどうなるでしょうか?この場合は先ほどと違い、3つの[メモ](firjal)が全て同じ値になるとは限りません。もともとf1
に入っていた値はf2
に移り、f1
は新しくf0
の値で上書きされます。
また、特定の数値を直接[メモ](firjal)に入れることもできます。
kRz 3 f1 kRz f1 f2
とすると、まず数値3がf1
に入り、次にそれがf2
に書き写されます。
もちろん、次のような操作を行うことはできません。
kRz f1 2
数値「2」は当然記憶装置ではないので、そこに対して値を書き込むことなどできるはずがないからです。
ちなみに、
kRz f0 f0
のように、書き写し元と書き写し先が同一の[メモ](firjal)を指している場合は、何も起きません。この「何も起きない」ということを明示的に表すために、kRz f0 f0
の別名として、[何もしない](fav es niv e'i)を略したfen
という名前を使うことができます。
メモリに関しては、kRz f1@ f1@
で何も起きない保証はない(メモリが読み取り専用だったり存在しなかったりしたら例外になるでしょう)が、そもそも例外機構自体の仕様が定まっていないし言及しないのが吉
さて、これで[メモ](firjal)を操作することができるようになりましたが、[住所箱](setistafar)を操作したいときにはどうすればよいのでしょうか?次はそれを見ていきましょう。