* acl4の開発ログ #06
-(by [[K]], 2026.02.12)
** 2026.02.12(木) #0
-[[a4_0011]]、[[a4_0012]]、[[a4_0013]]を書きました。プリプロセッサが完成しました!
-[[a4_d0002]] (ここまでの開発速度について(a4_0001~0013)) を書きました。
-ここでいったん一区切りだと思うので、主要なコードを一括でダウンロードできる.zipファイルを作りたいです。
-acl4以外の雑務がたまっているので、しばらくはそれを片づけます。だから1週間くらいはお休みです。
-次はインタプリタを作りたいと思っています。・・・2026年版のプログラミング言語自作入門になるのかな??
-いやでも、今回は詳しい解説はしない予定なので、そこは期待しないでください。
-今回作ったプリプロセッサを使って作るので、結構面白いことになるのではないかと期待しています!
** 2026.02.13(金) #0
-(作る暇はまだないけど)言語をどうやって作ったらいいのか思案中。
-たぶん簡素な中間言語を作って、その中間言語にコンパイルして動かす方式で行くと思います。
-最初に作るのは中間言語の整備になるかなーと思います。コンパイルして動かしたり、インタプリタで動かしたり。
-それができたら、C言語などからその中間言語に変換するコンパイラを書く予定です。
** 2026.02.13(金) #1
-[[a4_d0003]] (acl4v010のダウンロードページ) を書きました。
** 2026.02.14(土) #0
-作りたい中間言語を a4vm と呼ぶことにします。
** 2026.02.15(日) #0
-a4vmのアセンブラを(ぼんやりと)設計しています。
#define c R00 // 整数レジスタ
#define lp L0000 // ラベル
Lod_RI(c, 0x20)
Lbl_T(lp)
Dbg_Putc_R(c)
Add_RI(c, 1)
Jlt_RIT(c, 0x7f, lp)
Dbg_Putc_I(10) // LF
Dbg_Ret_I(0)
-このくらいの仕様で行けば、アセンブラは1時間もかからずに作れそう・・・。
-とか思うと試しに作りたくなってきて危ない・・・。
-さっさと他のことを終わらせないと・・・。
** 2026.02.15(日) #1
-自作プリプロセッサでは複数行マクロ定義が使えるわけですが、これで面白いことができないかずっと考えていました。
-複雑な例じゃなくて、簡単な例を作りたいわけです。
-やっと一つ思いつきました。
// memo20260215a.txt
#define Factorial(n) [^
#if (n <= 1)
1
#else
(n) * Factorial(n - 1)
#endif
^]
print Factorial(10);
>t0013b memo20260215a.txt
3628800.000000
-ちゃんと階乗計算できています!
-普通のプリプロセッサでは、こんな変態なことできないですよね?(笑)
** 2026.02.15(日) #2
-[[a4_p0004]] (プリプロセッサを利用して短時間でアセンブラを作る) を書きました。
-なんかプリプロセッサって注目されてないけど、プリプロセッサって簡単に作れるし、応用しやすいんですよーー。
* こめんと欄
#comment