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とはなんなのだろうか。
    • さまざまな言語をつなぐインターフェース環境?
    • そういう考え方も面白いかもしれない。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-28 (水) 17:14:22 (2765d)