Goldensteps

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

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

本エントリでは2冊目(青い方)の29ページ目まで進行します。

◆CODE REPETITION

あなたはEXAを書いていて何度も何度も繰り返しについて実行します。場合によっては、ループを作成するのではなく、1つまたは複数の命令を数回コピーして貼り付ける方が簡単であることがわかります。

Sometimes stupid code is smarter code.

ループを使用して値1~5をファイルに書き込むこのコードを検討してください。

ループを "アンロール"して、次のように書き直すことができます:

それは分かりませんが、このように書くことにはいくつかの利点があります。 1つは、レジスタを使用しないことです。 おそらくもっと重要なことは、ループを使用するよりも4倍以上高速です!

ループを展開すると、より便利で時にはよりエフェクトになることがありますが、コードのコピーと貼り付けはエラーが発生しやすく、面倒です。貼り付けられたバージョンでは小さな調整が必要な場合は特にです。それは、マクロ命令の秘密の魔法が作用する場所です。 EXODUSの最近のバージョンに導入されたばかりで、マクロ命令は「コードを記述するコード」と考えることができます。より技術的には、繰り返しコードを生成する擬似命令なので、手動ですべてを書き出す必要はありません。

Let's take a look at some examples:

これを書く代わりに:

あなたはこれを書くことができます:

構文の詳細は次のとおりです。

@REP N
このコードとその後の@END疑似命令の間でコードをN回繰り返します。 プログラムが実行される前に重複が発生するため、Nは定数でなくレジスタでなければなりません。 @ RPE / @ ENDブロックをネストすることもできません。

@{N,M}
これは、計算された数値定数を代入します。 最初の繰り返しでは、値Nが使用されます。 その後の繰り返しでは、値は毎回Mずつ増加します。 NとMは定数でなければなりません。