タグ

FFIに関するkuenishiのブックマーク (4)

  • Erlang Forum - Trap Exit ~ View topic - State of the Union: FFI

    kuenishi
    kuenishi 2009/10/28
    これは期待!!!
  • Foreign Function Interface をいくつか見てまわる - higepon blog

    動機 VM を C++ に移植開始したのだけど、以前 M さんから指摘のあった C/C++ を呼び出すインターフェースもしくはその逆、つまりForeign Function Interface について考えるなら今しかないので考えよう。 同年代のスーパープログラマ M さんに「どうやって勉強したら良いだろうか?」と問うたら即答。 まずは、CommonLispのdefun-c-callableとchunkあたりを調べて 次にJavaのJNIとC#のP/Invoke周り(特にcustomのmarshalerとか)を調べて 後はrubyとかgaucheの共有ライブラリあたりしっときゃいいんじゃね? だそうです。 ひぇ。まだまだ彼には追いつける気がしない。 Common Lisp の defun-c-callable defun-c-callable は obsolete で defun-fore

    Foreign Function Interface をいくつか見てまわる - higepon blog
    kuenishi
    kuenishi 2009/04/14
  • FFI - Foreign Function Interface のしくみまとめ - higepon blog

    FFI とは何か? ある言語から他の言語で作られたライブラリを呼び出すしくみの事。 ここでは Scheme から C の関数を呼び出す方法をとり上げる。例えば Scheme から libxml の関数を呼ぶなど。 しくみ 上から順に処理が流れる。 ライブラリのロード 呼び出そうとする C 関数を含む共有ライブラリをロードする。ロードに必要な情報は共有ライブラリの名前である。この名前はユーザーが指示する。 dlopen, LoadLibrary などでロードが行われる。この作業は初期化時に一回行うだけでよい。 型情報の提供 呼び出そうとしている関数の引数や戻り値の型を処理系(VM)に提供する。例えば引数は int, char* 、戻り値は void など。 これらの情報はユーザーが手入力したり、FFIの仕組みがヘッダをパースしたり(c-wrapper)することで提供される。 また引数の個数も

    FFI - Foreign Function Interface のしくみまとめ - higepon blog
    kuenishi
    kuenishi 2009/04/14
  • Gauche:FFI

    FFI (Foreign Function Interface) とは 処理系(この場合は Gauche) から他の言語の関数を呼び出す または、他の言語から処理系(この場合は Gauche) の関数を呼び出す 仕組みのこと。良く有るのは高レベル言語から低レベルレイヤのCライブラリ 等を呼び出すような場合。 一方の言語から他方の言語へ引数やら呼び出し形式やらを変換し、 返って来た値をもとの言語へと変換してやる仕組みが必要。 一般にstubと呼ばれる。また、他方の言語のデータ構造にアクセスするための APIもFFIに含まれる。 ターゲット言語にどう埋めこまれるか、および stubをどのくらい動的に構成するかという点でいくつか実装戦略が考えられる。 最もソフィスティケートされた形式は、ターゲット言語に若干の宣言を 付加するだけで、ターゲット言語の手続きと同様に呼び出せる、というようなもの。 イ

    Gauche:FFI
  • 1