- 追加された行はこの色です。
- 削除された行はこの色です。
* 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宣言を入れない限り、別のソースではコンパイルできないなあ。
--じゃあ、ひとまず分割コンパイルには対応しないで、ソースの末尾にくっつける構想で行くかな・・・。
** メモなど
* こめんと欄
#comment