a4_log10
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* acl4の開発ログ #10
-(by [[K]], 2026.04.21)
-''acl4開発のもくじ → [[a4_i01]]''
** 2026.03.27(金) #0
-ええとまず「失言ドリブン」という話をさせてください。
-私はかつて TONWS用PC98エミュレータ「V98」というソフトウ...
-なぜこれを作ったのかということですが、まず自分の家には98...
-当時の私はTOWNSが大好きで(今も好きですよ、もちろん)、P...
-それで「ちょっと迷ったけど、たぶんわからないことがあった...
-それで友人たちが後悔するとかそういうことはなかったのです...
-言ったからにはやらなきゃいけないわけです(とはいえ、友人...
-この話で私が伝えたいのは「軽率な失言をすると、やむを得な...
~
-私は今年に入ってから、軽率な約束を2つしています。それを...
--Buntan-PCプロジェクトのためのCコンパイラを、私が年内に...
--OSASKのアプリケーションのkaodunを逆アセンブルなどで解析...
** 2026.03.27(金) #1
-なんか適当に1時間くらいやれば、浮動小数点を基本型にもつ...
** 2026.03.29(日) #0
-a4vmの本番用の仮想マシンを作っているのですが、再帰処理で...
** 2026.03.29(日) #1
-よし直ったー。
** 2026.03.30(月) #0
-[[a4_0014]]に書いたサンプルプログラムの t0014a.c は、思...
-明日にはプログラム例を書きます。
** 2026.03.31(火) #0
-[[a4_0014]](A4vm_exec0など)を書きました。これで何がで...
** 2026.03.31(火) #1
-ここから、プリプロセッサの連鎖でコンパイラを構築するって...
** 2026.04.01(水) #0
-今日は病気でお休み。
** 2026.04.01(水) #1
-いきなり理想形を考えるのではなく、まずは現状のプリプロセ...
** 2026.04.02(木) #0
-変換手順(妄想・暫定版)
[1]
int i, s;
for (i = 0; i < 10; i++)
s += i;
[2]
#define i Int:R00
#define s Int:R01
Lod(i, CInt:0); Lbl(Txt:LT0001);
Add(s, i);
Add(i, CInt:1); Jlt(i, CInt:10, Txt:LT0001);
[3]
Lod(Int:R00, CInt:0); Lbl(Txt:LT0001); Add(Int:R01, Int:...
[4]
Lod_RI(R00, 0); Lbl_T(LT0001); Add_RR(R01, R00); Add_RI(...
[5]
Lod_RI(R00, 0); Lbl_T(LT0001); Add_RRR(R01, R01, R00); A...
-うん、これくらいなら作れそうな気がします。
-まず[4]→[5]は簡単です。
#define Add_RR(r, s) Add_RRR(r, r, s)
-みたいなのをたくさん書けばいいだけだからです。
-それで[3]→[4]をやるには、型付きdefineを作らないといけま...
#typedDef Lod(Int:r, CInt:i) Lod_RI(r, i)
#typedDef Lod(Int:r, Int:s) Lod_RR(r, s)
-では[2]→[3]はどうかというと、これは普通のプリプロセッサ...
-残った[1]→[2]は、これはプリプロセッサではなくて言語です。
** 2026.04.02(金) #1
-[Q] これでCコンパイラができそうなことはなんとなくわかり...
-[A] [1]→[2]の変換を見てください。コンパイラはiやsの型を...
-一方で、この型の組み合わせの加算の時はこれに変換する、と...
-型の追加だって思いのままです。String型やComplex型、Vecto...
-C++のoperatorっぽいことができるわけです。
** 2026.04.02(金) #2
-[1]自分の作品に「主要なテーマ」があるととてもいいと思っ...
-たとえば料理を作るのなら、「〇〇産のこの野菜がとてもおい...
-絵を描くにしても、「この笑顔が忘れられない。これを最大限...
-[2]私がOS自作をしようと思ったとき(第一世代OSASKのとき)...
-まず32bitというレジスタ幅に感動しました。16bitでは64KBを...
-そもそもメモリが64KBとか1MBしか使えないっていう8086は狭...
-新しくなったセグメンテーションもとても感激しました。メモ...
-実行速度は高速でした。特にi486はとんでもなく速いと感じま...
-私はこのCPUの機能を生かし切るためのOSを作ってやろう!と...
-結果としてとても面白いOSができたと思っています。
-[3]最近は移植性が大事で、特定のハードウェアや特定のOSに...
-[4]acl4は何がテーマでしょうか。・・・まず、テーマより前...
-じゃあテーマは何かというと、C言語だけでもここまでできる...
** 2026.04.05(日) #0
-#typedDefの仕様が固まってきたので、そろそろ作れそうな気...
#typedDef Lod(Int:,r, CInt:,i) Lod_RI(defRight(r,:), de...
#typedDef Lod(Int:,r, Int:,s) Lod_RR(defRight(r,:), de...
-rの中身が"Int:"で始まっていて、かつiの中身が"CInt:"で始...
-つまり「型=どんな文字列で始まっているか」という解釈にし...
-展開先に型情報は不要で:よりも後ろだけを取り出したい場合...
** 2026.04.06(月) #0
-ポインタを多用する構造体を適当に作っていたら、バグを2個...
-すごく役に立ったなーと思ったポイント:
--バグ1: 構造体の中にポインタを入れる場所があるのに、init...
--バグ2: a_malloc_debugList()によるとメモリリークがあると...
** 2026.04.07(火) #0
-私は個別に効率の良いデータ構造を設計するのではなく、同じ...
-VecChr は可変長な文字列や可変長の配列に適していて、固定...
-いい機会なので、両方の方針で作ってみて、違いを比べてみた...
** 2026.04.07(火) #1
-作り比べました。77行が70行になって、7行も少なくなりまし...
-今後も似たような開発はあると思うので、トータルではかなり...
** 2026.04.07(火) #2
-[Q] 行数が減ることはそんなに重要ですか?
-[A] 重要です、少なくとも私にとっては。行数が減ると、一気...
-この6行の削減は、77行の時の書き方でも適用可能なのですが...
** 2026.04.09(木) #0
-typedDefの宣言だけはできるようになりました。
-あとは展開ができれば・・・。
-まあ展開ルーチンを書いてないので、本当に宣言が期待したメ...
-deinit後にメモリリークもないので、きっと、たぶん、うまく...
** 2026.04.10(金) #0
-typedDefがちゃんと動きましたー。展開部も書いてデバッグし...
-プログラムはきれいになってないのですが、それをどうするか...
** 2026.04.10(金) #1
-現状をいったんまとめます。
-私はここ数週間、今までとは違ったやり方でコンパイラを作ろ...
-どこが違うのかというと、「for (i=0; i<10; i++) { s+=i; }...
-でも実際のCPUは、整数命令なのか、浮動小数点数の命令なの...
-これのよいところは、デバッグ支援のために「設定した上限・...
-「チェック機構を充実させて、不正な場所にアクセスすること...
-従来のCコンパイラの作り方では、型の管理はコンパイラと蜜...
-この開発は「こういう作り方にすることで、Cコンパイラを簡...
** 2026.04.10(金) #2
-手元の実験では、「s=0; for (i=0;i<10;i=i+1) for (j=0;j<1...
-何とかして直さないと・・・。
** 2026.04.10(金) #3
-やったー、メモリリークが直りましたー。
* こめんと欄
#comment
終了行:
* acl4の開発ログ #10
-(by [[K]], 2026.04.21)
-''acl4開発のもくじ → [[a4_i01]]''
** 2026.03.27(金) #0
-ええとまず「失言ドリブン」という話をさせてください。
-私はかつて TONWS用PC98エミュレータ「V98」というソフトウ...
-なぜこれを作ったのかということですが、まず自分の家には98...
-当時の私はTOWNSが大好きで(今も好きですよ、もちろん)、P...
-それで「ちょっと迷ったけど、たぶんわからないことがあった...
-それで友人たちが後悔するとかそういうことはなかったのです...
-言ったからにはやらなきゃいけないわけです(とはいえ、友人...
-この話で私が伝えたいのは「軽率な失言をすると、やむを得な...
~
-私は今年に入ってから、軽率な約束を2つしています。それを...
--Buntan-PCプロジェクトのためのCコンパイラを、私が年内に...
--OSASKのアプリケーションのkaodunを逆アセンブルなどで解析...
** 2026.03.27(金) #1
-なんか適当に1時間くらいやれば、浮動小数点を基本型にもつ...
** 2026.03.29(日) #0
-a4vmの本番用の仮想マシンを作っているのですが、再帰処理で...
** 2026.03.29(日) #1
-よし直ったー。
** 2026.03.30(月) #0
-[[a4_0014]]に書いたサンプルプログラムの t0014a.c は、思...
-明日にはプログラム例を書きます。
** 2026.03.31(火) #0
-[[a4_0014]](A4vm_exec0など)を書きました。これで何がで...
** 2026.03.31(火) #1
-ここから、プリプロセッサの連鎖でコンパイラを構築するって...
** 2026.04.01(水) #0
-今日は病気でお休み。
** 2026.04.01(水) #1
-いきなり理想形を考えるのではなく、まずは現状のプリプロセ...
** 2026.04.02(木) #0
-変換手順(妄想・暫定版)
[1]
int i, s;
for (i = 0; i < 10; i++)
s += i;
[2]
#define i Int:R00
#define s Int:R01
Lod(i, CInt:0); Lbl(Txt:LT0001);
Add(s, i);
Add(i, CInt:1); Jlt(i, CInt:10, Txt:LT0001);
[3]
Lod(Int:R00, CInt:0); Lbl(Txt:LT0001); Add(Int:R01, Int:...
[4]
Lod_RI(R00, 0); Lbl_T(LT0001); Add_RR(R01, R00); Add_RI(...
[5]
Lod_RI(R00, 0); Lbl_T(LT0001); Add_RRR(R01, R01, R00); A...
-うん、これくらいなら作れそうな気がします。
-まず[4]→[5]は簡単です。
#define Add_RR(r, s) Add_RRR(r, r, s)
-みたいなのをたくさん書けばいいだけだからです。
-それで[3]→[4]をやるには、型付きdefineを作らないといけま...
#typedDef Lod(Int:r, CInt:i) Lod_RI(r, i)
#typedDef Lod(Int:r, Int:s) Lod_RR(r, s)
-では[2]→[3]はどうかというと、これは普通のプリプロセッサ...
-残った[1]→[2]は、これはプリプロセッサではなくて言語です。
** 2026.04.02(金) #1
-[Q] これでCコンパイラができそうなことはなんとなくわかり...
-[A] [1]→[2]の変換を見てください。コンパイラはiやsの型を...
-一方で、この型の組み合わせの加算の時はこれに変換する、と...
-型の追加だって思いのままです。String型やComplex型、Vecto...
-C++のoperatorっぽいことができるわけです。
** 2026.04.02(金) #2
-[1]自分の作品に「主要なテーマ」があるととてもいいと思っ...
-たとえば料理を作るのなら、「〇〇産のこの野菜がとてもおい...
-絵を描くにしても、「この笑顔が忘れられない。これを最大限...
-[2]私がOS自作をしようと思ったとき(第一世代OSASKのとき)...
-まず32bitというレジスタ幅に感動しました。16bitでは64KBを...
-そもそもメモリが64KBとか1MBしか使えないっていう8086は狭...
-新しくなったセグメンテーションもとても感激しました。メモ...
-実行速度は高速でした。特にi486はとんでもなく速いと感じま...
-私はこのCPUの機能を生かし切るためのOSを作ってやろう!と...
-結果としてとても面白いOSができたと思っています。
-[3]最近は移植性が大事で、特定のハードウェアや特定のOSに...
-[4]acl4は何がテーマでしょうか。・・・まず、テーマより前...
-じゃあテーマは何かというと、C言語だけでもここまでできる...
** 2026.04.05(日) #0
-#typedDefの仕様が固まってきたので、そろそろ作れそうな気...
#typedDef Lod(Int:,r, CInt:,i) Lod_RI(defRight(r,:), de...
#typedDef Lod(Int:,r, Int:,s) Lod_RR(defRight(r,:), de...
-rの中身が"Int:"で始まっていて、かつiの中身が"CInt:"で始...
-つまり「型=どんな文字列で始まっているか」という解釈にし...
-展開先に型情報は不要で:よりも後ろだけを取り出したい場合...
** 2026.04.06(月) #0
-ポインタを多用する構造体を適当に作っていたら、バグを2個...
-すごく役に立ったなーと思ったポイント:
--バグ1: 構造体の中にポインタを入れる場所があるのに、init...
--バグ2: a_malloc_debugList()によるとメモリリークがあると...
** 2026.04.07(火) #0
-私は個別に効率の良いデータ構造を設計するのではなく、同じ...
-VecChr は可変長な文字列や可変長の配列に適していて、固定...
-いい機会なので、両方の方針で作ってみて、違いを比べてみた...
** 2026.04.07(火) #1
-作り比べました。77行が70行になって、7行も少なくなりまし...
-今後も似たような開発はあると思うので、トータルではかなり...
** 2026.04.07(火) #2
-[Q] 行数が減ることはそんなに重要ですか?
-[A] 重要です、少なくとも私にとっては。行数が減ると、一気...
-この6行の削減は、77行の時の書き方でも適用可能なのですが...
** 2026.04.09(木) #0
-typedDefの宣言だけはできるようになりました。
-あとは展開ができれば・・・。
-まあ展開ルーチンを書いてないので、本当に宣言が期待したメ...
-deinit後にメモリリークもないので、きっと、たぶん、うまく...
** 2026.04.10(金) #0
-typedDefがちゃんと動きましたー。展開部も書いてデバッグし...
-プログラムはきれいになってないのですが、それをどうするか...
** 2026.04.10(金) #1
-現状をいったんまとめます。
-私はここ数週間、今までとは違ったやり方でコンパイラを作ろ...
-どこが違うのかというと、「for (i=0; i<10; i++) { s+=i; }...
-でも実際のCPUは、整数命令なのか、浮動小数点数の命令なの...
-これのよいところは、デバッグ支援のために「設定した上限・...
-「チェック機構を充実させて、不正な場所にアクセスすること...
-従来のCコンパイラの作り方では、型の管理はコンパイラと蜜...
-この開発は「こういう作り方にすることで、Cコンパイラを簡...
** 2026.04.10(金) #2
-手元の実験では、「s=0; for (i=0;i<10;i=i+1) for (j=0;j<1...
-何とかして直さないと・・・。
** 2026.04.10(金) #3
-やったー、メモリリークが直りましたー。
* こめんと欄
#comment
ページ名: