* KHPC ver.0.01の内部資料的なもの
-(by [[K]], 2016.05.19)

** 基本仕様
-KHPCの2番目のバージョン。KHPCは[[persistent-C>persistent_C]]の簡易実装を目指したツール群。
-基本方針: とにかくできるだけ手抜きをする。次のバージョンでまともにすればいい。手抜きは美徳である。

-このバージョンの目玉:「persistent命令」をサポートする。

** ダウンロード
-開発中

** 関数群
-[[KHPC_v000doc01]]に準ずる。

** persistent命令の変換アルゴリズム
-与えられたソースから「persistent」を含む宣言を探し出す。そしてその変数名を内部のバッファに貯める。
--ソースは1つとは限らない。分割コンパイルなどで複数のソースに分かれているかもしれないので。
-ソースをすべてチェックしたら、以下のようなテキストファイルを出力する。
--"abc", "def", "ghi"という3つの変数がpersistent属性を持っていたとする。
 void persistent_grp(int grpId, const char *path, const char *tmp, const char *memo);
 void persistent_def(void *p, int size, int grpId, const char *id);
 
 void persistent_default()
 {
     persistent_grp(0, "p-vars.pbd", "p-vars.pb_", "(local)");
     persistent_def(&abc, sizeof(abc), 0, "abc");
     persistent_def(&def, sizeof(def), 0, "def");
     persistent_def(&ghi, sizeof(ghi), 0, "ghi");
     return;
 }
--このソースを含めてコンパイル&リンクすればいい。
--このpersistent_default()という関数はpersistent_load()が最初に実行された時のみ、呼ばれるようにしておく。
-元のソースからpersistentの語を消す必要があるが、それは-Dpersistent=というオプションをgccに渡すことで実現したい。

~
-しまった、これではダメだ。extern宣言を入れない限り、別のソースではコンパイルできないなあ。
--そしてextern宣言を入れる道は、いばらの道・・・。
--じゃあ、ひとまず分割コンパイルには対応しないで、ソースの末尾にくっつける構想で行くかな・・・。

** メモなど

* こめんと欄
#comment


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS