作者は Makefile には、 プロファイリングを使用してスーパー命令を作成するためのルールを追加していません(スーパー命令選択の選択肢はたくさんありますが、 それらの選択肢を Makefile にハードコードしたくありませんでした)が、 サポートするスクリプトがいくつかあります。 例:
fib.mini と test.mini をトレーニング・プログラムとして使用すると、 以下のようなプロファイルが得られます:
make fib.prof test.prof #数秒かかります
これらのプロファイルは stat.awk で集約できます:
awk -f stat.awk fib.prof test.prof
結果には以下のような行が含まれます:
2 16 36910041 loadlocal lit
これは、 シーケンス loadlocal lit
が 2 つのプロファイルで合計 16 回静的に発生し、 動的実行数が 36910041
であることを意味します。
数値はスーパー命令を選択するためにさまざまな方法で使用できます。 たとえば、 動的実行数が 10000 を超えるシーケンスをすべて選択したい場合は、 以下のパイプラインを使用します:
awk -f stat.awk fib.prof test.prof| awk '$3>=10000'| #シーケンスを選択 fgrep -v -f peephole-blacklist| #良くない命令を排除 awk -f seq2rule.awk| #シーケンスをスーパー命令ルールに変換 sort -k 3 >mini-super.vmg #シーケンスを並べ替え
ファイル peephole-blacklist には、スタックまたはスタック・ポインター(mini 言語の場合: call
、return
)に直接アクセスするすべての命令が含まれています。 並べ替え手順は、 プレフィックスが、
大きなスーパー命令よりも前に配置されるようにするために必要です。
いまや、 あなたは ‘make’ と言うだけでスーパー命令を備えたバージョンの mini 言語を作成できるようになりました。