|
今天把这个功能加到了我那个解释运行的脚本当中,可以通过以下格式导入DLL中的调用: <APIs> <BIN file="user32.dll"> <stdcall name="MessageBoxA" param="4" /> <stdcall name="MessageBoxW" param="4" /> </BIN> </APIs> 这样就可以所谓的序列化外部二进制调用,主要是用起DLL来方便一点点。这次把if系关键字的递归去掉了,彻底解决了continue和break关键字的bug,而且还实现了一直没实现的return关键字。 想要完全的和C兼容,必须还要实现对结构体的操作。对于解释运行的脚本来讲,寻址那些成员可以通过预先定义偏移常量来实现,在预处理时先把脚本里的一些文本符号替换成常数。 为了提高关键部分的速度,我打算先在脚本里直接嵌入机器码,形如{\xHH\xHH...}作为一个调用。在外部配置即时编译的DLL(独立成其他项目),然后根据首字来实现语言的指定,如A{...}为汇编,C{...}为C表达式等等。在预处理器将其转换成机器码形式,这样语言本体里只需处理机器码形式的{}了。 胡言乱语了一通,下面是一个测试程序,将test.pndr拖到exe上即可运行。
test.rar
|
一共有 0 条评论