新型 JavaScript 轻量级脚本解释器 NewScript 介绍

 

        NewScript 是一套从零开始自己实现的一门全新的 类JavaScript 语法的轻量级脚本解释器编译器调试器

        作为解释器,它支持各种复杂的JavaScript脚本语法(如函数、Lambda表达式、if / else、for、while、do / while、

try / catch 控制流等);支持函数任意嵌套定义,及自由指定全局变量及局部变量作用域;支持任意外部接口扩展。

        同时,其已实现 JIT 即时编译加速能力,执行过程中边解释边编译,重复执行相同语句将不再重新编译而是

直接调用内部已经编译好的二进制指令,大大加快了脚本语言的执行效率。

        同时作为编译器,它也支持将目标脚本全编译为汇编语言或者二进制流,支持直接存入磁盘并直接加载运行。

在编译过程中,支持同时采用源码混淆功能将源代码进行混淆加密。

         同时,目前 NewScript 也提供了简单的调试接口,方便开发者编写源码级调试器

 

项目地址:

               https://github.com/tankaishuai/NewScript

(目前项目还在后续开发中。目标是超越 V8……233 开玩笑 )

 

 

 

 

本文主要简要介绍一下基本用法及原理。

 

一、命令行 command_shell NewScript.exe 的使用:

直接不带参数运行,进入交互式 shell。 如下:

 

 

命令: eval:target_file_path 可以直接用来执行 JavaScript 脚本,或者执行编译后生成的二进制文件(或者汇编脚本)。

            compile:target_file_path 用于编译目标 JavaScript 脚本, 然后会在同级目录下生成一个 .asm(汇编) 文件与 .bin (二进制,与汇编文件对应)文件。

例如,编译如下脚本:

后,生成:

 

发布时仅仅只需要发布已经编译好的 .bin (二进制)文件即可。

以非交互式命令行直接运行,如下:

     NewScript.exe "/q eval:target_file_path"                 运行指定的 js 脚本,或者运行已经编译好的汇编文件或者二进制流。

     NewScript.exe "/q compile:target_file_path"           编译指定的 js 脚本,生成编译好的 .asm 汇编文件 与 .bin 二进制流。

 

 

二、SDK的使用

    目前 NewScript SDK (eval64_sdk.h) 开放了如下接口:

 

(1)执行文本,或者执行文件:

 

(2)编译文本,或者编译文件:

 

(3)注册函数,或者运算符重载

例如,我们重新实现 != 运算符,可以如下做:

__int64  my_not_equals (const __int64 *start_args, size_t num_args) {

      if( num_args != 2 )

         throw "bad func args";

     return (start_args[0] != start_args[1]);

}

eval64_register_v2( eval_struct, "!=",  my_not_equals);

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值