日志文章

2007年09月22日 23:24:26

实现了用xml引用dll调用的功能

   今天把这个功能加到了我那个解释运行的脚本当中,可以通过以下格式导入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


Tags: 潘多拉   脚本  

类别: 一般编程 |  评论(0) |  浏览(3500) |  收藏
发表评论
看不清楚,换一张