文字記述子に関するさらに多くの作業。COMMON 内の文字変数を除いて、以前に機能していたものはすべて再び機能します。これにより、割り当て方法を大幅に変更する必要があったため、報告されたいくつかのバグは保留のままにしなければなりませんでした。まだアップロードがありません。
3月4日
Michael Richmond と Alvin Brattli の両方が、共通ブロック内の CHARACTER 変数に関する問題を報告しました。これについては、次に説明します。Alvin は、無限再帰を引き起こすステートメント関数の問題を報告しました。これは修正されており、ここ数日間文字変数の割り当てに関する問題に取り組んでいたことから解放されました。
2月27日
Joost VandeVondele はいくつかのバグ レポートを送信しました。文字処理が戻るまで待つ必要がありますが、彼のバグの 1 つは文字値関数を直接扱っています。
連結が再び機能するようになりました。ダウンロード可能なバイナリは、壊れているものが多すぎるため、ソースと同期していません。文字変数に!
2月26日
hello-world プログラムが再び機能するようになりました。現在、連結に取り組んでいます。
2月25日
単純な文字定数を正しく作成し、ほとんどのライブラリを新しい文字変数で動作するように変換しました。
2月24日
文字変数の処理を修正する方法について多くのことを考えています。私は表現に落ち着き、それを実装し始めました。
2月23日
モジュール プロシージャの呼び出しに関連するいくつかの問題が修正されました。数週間前に誰がグレゴリオ暦モジュールを送ってくれたか覚えていませんが、今では問題なく動作しています。
2月21日
Helge は、新しいコードのいくつかの問題を指摘しました。これはすべて、Knuth の AOCP のツリーからの数字の入力ミスに関係していました。彼はいくつかの不可解な速度低下を観察しましたが、これらは配列に関連しているようです。
また、ステートメント関数 (関数と引数リストの両方) の型解決に関連するいくつかの問題も修正しました。これらは現在、正しく処理されているようです。
2月20日
Helge Avlesen は昨日、新しい累乗コードは、何かが小さい整数累乗、つまり一般的な操作である 2 乗と 3 乗になる場合に非常に遅くなると指摘しました。私は、Knuth の Art of Computer Programming で説明されているアルゴリズムを実装しました。そこでは、乗算の最適なセットを使用して、整数指数を計算します。彼のツリーは n=100 まで上がりました。負の指数は、逆数を取ることによって実装されます。
サンプルプログラムは次のとおりです。
関数 exp39(b) 倍精度 :: b, exp39 exp39 = b ** 39 終わり
結果のアセンブラは次のとおりです。
.file "tst.f90" 。文章 .globl exp39 .type exp39、@関数 exp39: pushl %ebp movl %esp, %ebp サブル $8、%esp _g95_push_context を呼び出す movl 8(%ebp), %eax fldl (%eax) fld %st(0) fmul %st(1), %st fmulp %st, %st(1) fld %st(0) fmul %st(1), %st fmul %st(0), %st fmul %st, %st(1) fmul %st, %st(1) fmulp %st, %st(1) fstpl -8(%ebp) _g95_pop_context を呼び出す fldl -8(%ebp) 離れる 戻る .size exp39、.-exp39 .ident "GCC: (GNU) 3.5-tree-ssa 20021226 (実験的)"
これは素晴らしいことです。一時ファイルは完全に x87 レジスタ内にとどまります。これは、これが可能な限り高速であることを意味します。
2月18日