* 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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS