読者です 読者をやめる 読者になる 読者になる

しー言語たぶん最後

http://shinh.skr.jp/koneta/#shelang

思いの他がんばった。対応 OS が Linux, FreeBSD, Solaris, NetBSD, MacOSX, Windows

Winバイナリ入り。 ./she.exe test.she や ./she.exe test_sdl.exe などと。

たぶんいずれまとめるけど、前回 (http://d.hatena.ne.jp/shinichiro_h/20051103#1130952069) からの追加事項。

  • SolarisFreeBSD とほとんど同じ。 dlinfo も RTLD_SELF もある。
  • 前回述べた通り、 NetBSDMacOSX はシンボル一覧を取得するために !load の第二引数で関数一つの名前を dlsym のヒントとして必要がある。例: !load "libm.so" "sin"
  • Windows は ldd 相当のやり方は教えていただきました (http://d.hatena.ne.jp/shinichiro_h/20051103#c1130979835) 。シンボル情報の無い DLL からのシンボル一覧を引っこ抜く方法がまだわかってない。libbfd に頼らずモジュールハンドルから抜く方法は Win32API にありそうだけど。あと WINE だとツラい。
  • OpenBSD は dladdr も dlinfo も無い。キツい。 dlctl の実装待ち状態だと思う。
  • 上記対応 OS 全てで libffi はキチンと動作した。素晴らしい。

追記: あ、 test.she って無編集じゃ Windows で動かない気がしてきた。少なくとも !load "m" "sin" はコメントアウトして下さい。

printf

それとこれは問題なく動いたから嘘ツキは死ねばいいと思った。

#include <stdio.h>

int main() {
    int (*fp) (const char*, int);
    fp = printf;
    fp("%d\n", 1);
    return 0;
}
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h