acl4の開発ログ #06
2026.02.12(木) #0
- ここでいったん一区切りだと思うので、主要なコードを一括でダウンロードできる.zipファイルを作りたいです。
- acl4以外の雑務がたまっているので、しばらくはそれを片づけます。だから1週間くらいはお休みです。
- 次はインタプリタを作りたいと思っています。・・・2026年版のプログラミング言語自作入門になるのかな??
- いやでも、今回は詳しい解説はしない予定なので、そこは期待しないでください。
- 今回作ったプリプロセッサを使って作るので、結構面白いことになるのではないかと期待しています!
2026.02.13(金) #0
- (作る暇はまだないけど)言語をどうやって作ったらいいのか思案中。
- たぶん簡素な中間言語を作って、その中間言語にコンパイルして動かす方式で行くと思います。
- 最初に作るのは中間言語の整備になるかなーと思います。コンパイルして動かしたり、インタプリタで動かしたり。
- それができたら、C言語などからその中間言語に変換するコンパイラを書く予定です。
2026.02.13(金) #1
2026.02.14(土) #0
- 作りたい中間言語を a4vm と呼ぶことにします。
2026.02.15(日) #0
- a4vmのアセンブラを(ぼんやりと)設計しています。
#define c R00 // 整数レジスタ
#define lp L0000 // ラベル
TxtBgn()
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)
TxtEnd()
- このくらいの仕様で行けば、アセンブラは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
- ちゃんと階乗計算できています!
- 普通のプリプロセッサでは、こんな変態なことできないですよね?(笑)
こめんと欄