* Universal eXecutable Format - 02 -(by [[K]], 2016.09.27) ** Essenでのuxfのサポート -Essenではuxfdlとしてはprintfくらいしかサポートしない。これはデバッグのために提供されていて、本来は使わないことを想定している。基本的に、入出力はEssenの命令を使って行うべきで、uxf内で行うべきではない。 -uxfはもっぱらオンメモリ演算の高速化の手段を提供するだけである。 void entry(unsigend char *p) { ... } -基本的にこの関数が呼び出される。データの受け渡しはpのみを使って行う。 -いや、任意のEssen文を実行できる関数がuxfdlで提供できればより良い気がする。 --じゃあ、entryの引数を UCHAR *p だけじゃなくて void *handle も付けることにしよう。このhandleはessen関数を呼ぶときにのみ使う。 -Essenからuxfにデータを渡す場合、Essen側で文字列変数を一つ作り、そこに渡したいパラメータを書いて、uxfに渡す(unsigned char *pになる)。 --uxf側では、与えられたpの一部を書き換えて終了すれば、Essenはそれを受け取ることができる。 -ではessen関数を使って、uxfからessen命令を実行する場合は? --やはり文字列(というかバイト列だけど)を作ってそれを渡し、そこから変数を作っていく感じになると思われる。 --これをやるとなると、Essen側に、特殊な文字列型がほしくなるなあ。 ---普通の文字列型: 変数や値の寿命が尽きたら、領域は解放される ---特殊な文字列型: 変数や値の寿命が尽きても、領域の解放をしない --Essenから値を返す場合も、同じ文字列にデータを書き込んでいけばいい。そしたらuxf側でも値を受け取れる。 -しかしこうしてみると、Essenとはなんなのだろうか。 --さまざまな言語をつなぐインターフェース環境? --そういう考え方も面白いかもしれない。 * こめんと欄 #comment