Von Scriptsprache nativen Code aufrufen
-
Hoi.
Ich bastle an meiner eigenen Scriptsprache, die in erster linie als embedded Scriptingsprache verwendet werden soll. Was sind denn gaengige Techniken um mit maximaler Effizienz über den Bytecode des Interpreters nativen Code aufzurufen?
Danke und Grüße,
Ethon
-
Schau mal dir das an: http://en.wikipedia.org/wiki/Libffi
-
Danke, libffi kannte ich bereits.
Gibt es denn noch andere Ansätze? Wie macht es zb Java mit JNI oder Python mit den nativen Modulen? Habe dazu nicht viel gefunden.
-
Muss man mehr sagen:
http://img21.imageshack.us/img21/7450/80161477.pngJNI ist wohl eine Ausnahme, sonst wird "jeder" libffi verwenden, oder eigen implementieren.
-
schau dir den doom3 source an, die haben einen interesanten weg :).
ich habe keine ahnung wie jni das intern macht, aber du kannst per string vom functionsnamen und mit string von den parametern, c artige funktionen aufrufen, in denen du die primitiven (jfloat,jint,jboolean) bzw objekte (jobject,jstring) bekommst und die kannst du per VM-enviropment zu pointern aufloesen. ich denke die pushen nur 32bit werte auf den stack.
schau dir auch lua an, da bekommt jede funktion nur den stack und kann sich die daten selbst rausholen (kann man ja auch offline zu ne art bytecode compilieren).