narcissus
是一个由 javascript 自身实现的 javascript 解释器,最终效果和 spidermonkey
引擎保持一致,足以证明 javascript 本身就是一个完备的元循环
语言。
运行@shell
narcissus 可以跑在 spidermonkey shell 以及浏览器 spidermonkey 引擎环境下,经过修改也可运行于最新的 firefox 4.0,其他浏览器待测,首先说下如何在 mac 下的 spidermonkey shell 中运行:
安装 spidermonkey shell
1.安装 xcode
2.安装 MacPorts
,mac 下一个不错的软件依赖管理工具
3.安装 autoconf213 (build spidermonkey 必须要这个版本),运行 sudo port install autoconf213 安装
4.下载 spidermonkey 源码,推荐 1.85
,不推荐 1.70
5.进入 spidermonkey 源码目录 js/src ,先运行 autoconf213 ,再运行 make
6.最后在 js/src 目录下生成 js 可执行文件,大功告成,可执行 ./js 进入javascript解释器交互模式。
在 shell 中运行 narcissus
1.git clone 一分 nacissus
到本地目录 /code/narcissus
2.硬链接上一大步生成 js 可执行文件到 /code/narcissus : ln spidermonkey/js/src/js /code/narcissus
3.最后执行 ./njs python 脚本即可进入 narcissus 解释器的交互模式。
运行@browser
查看 njs python 脚本,可发现其实内部是通过调用spidermonkey shell 的 js 载入 narcissus 代码文件来启动 narcissus,具体执行命令实际为:
'/Users/yiminghe/code/javascript/narcissus/js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsdefs.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jslex.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsparse.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsdecomp.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsresolve.js', '-f', '/Users/yiminghe/code/javascript/narcissus/lib/jsexec.js', '-e', 'Narcissus.interpreter.repl();'
其中载入了一些 narcissus 的代码文件,最后执行表达式:
Narcissus.interpreter.repl();
进入了 narcissu 引擎的 repl
模式,该函数中定义在 jsexec.js,进行建立执行环境,解析语法树并执行的过程。
同时 jsexec.js 还提供了一个
Narcissus.interpreter.evaluate
函数,效果同 eval 一样,可直接执行 javascript 字符串,那么就可以不调用依赖 shell io 的 repl,而直接调用 evaluate,载入必要的引擎代码文件后,narcissus 就可以直接运行在浏览器上了:
narcissus @ firefox 4
要注意的是:firefox4 采用的 JägerMonkey
似乎和 spidermonkey 并不完全一致,例如不支持 let
语法,如果要运行在 firefox 4 中的话,需要将所有的 let 替换为 var。
分享到:
相关推荐
narcissus_python_源码
这是 Narcissus JavaScript 解析器,捆绑为单个文件以供浏览器使用。 安装此脚本会创建一个名为parcissus全局parcissus ,它是解析器对象。 感谢 Browserfy 让这个简单的创建。执照此存储库的内容受 Mozilla 公共...
根据辐射学原理,并考虑到实际探测器的接收尺寸,对现有的关于Narcissus等效温差的计算进行了修正。可以在红外光学系统设计阶段评价其Narcissus效应的影响程度,并为红外热成像系统提供评价Narcissus效应的定量判据。
水仙花数计算,比如153=pow(1,3)+pow(5,3)+pow(3,3) 支持N位的水仙花数计算
利用python计算1000以内的所有水仙花数。。。。。。。。。。。。。。。
基于python的人脸识别项目
依据柯赫氏法则对崇明水仙盆栽中叶褐枯病病原菌进行分离,得到3个可造成鳞茎和叶不同程度腐烂的致病真菌菌株。应用形态学鉴定法和真菌rDNA-ITS序列分析及ISSR分子标记技术进行鉴定,结果I株为丛赤壳属的丛赤壳菌...
以崇明水仙鳞茎的上、中、下部、嫩叶和幼嫩花序为外植体,研究其在离体培养系统中的再分化能力,结果表明,带鳞茎盘的鳞茎和幼嫩花序最容易分化出小鳞茎.以组培获得的带鳞茎盘的鳞茎为材料建立快繁体系,40 d内小鳞...
1) narcissus():输出所有“水仙花数”。 (水仙花数:一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 =153). 2) prime( ):输出1000以内的所有素数。 3) palindrome ( ):输出...
Black Narcissus Adaptation [Is equivalent to...] Favorite Movies: - Eyes Wide Shut - Black Narcissus - Adaptation [Is equivalent to...] ** Favorite Movies ** > Eyes Wide Shut > Blac
中国水仙高效再生体系的建立,冯莹,周翔,以三年生中国水仙(Narcissus tazetta var. chinensis)鳞茎为试验材料,研究中国水仙离体培养有效的消毒处理方式及高效的离体再生体系。试�
中国水仙NtMYB1基因的克隆及表达分析,杨晔,潘腾飞,本文为研究调控花青素合成机制,利用RT-PCR和RACE技术从中国水仙'金盏银台'(Narcissus tazetta var. chinensis 'Jinzhan Yintai'. ) 的花瓣和副冠中克�
打印出所有的"水仙花数(narcissus number)",所谓"水仙花数"是指一个三位数, 其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 利用for循环控制100-999个数...
数组 定义一个MyArray类,要求如下。 属性: int[] arr; :一个1维数组 方法(所有方法不可以定义为static方法): (1) public void init(int n){…} :数组初始化;参数n表示存储空间个数。...
水仙IfcNarcissus 是 Narcissus JavaScript Interpreter 的一个端口,支持信息流控制(简称 IFC)。 这是一项正在进行的工作。 更多细节将在稍后提供。
扩展/使用了许多开源工具:Joern、PHPJoern、Z3、Z3-str2、crawler4j、Narcissus JavaScript 引擎和 Xdebug。 有关 Navex 的更多信息,请阅读我们在 USENIX Security 2018 上发表的论文“Precise and Scalable ...
来源:Licence:MIT平台:iOS设备:iPhone / iPad作者:Narcissus 实现可自定义的Action Sheet。在Action Sheet中加入按钮、ScrollView等控件。 推荐理由:UI很简洁漂亮,代码也很简洁。 小编注:感谢开发者@...
衡量镜面冷反射大小的主要指标在于其对后向反射光线的在探测器靶面的聚焦程度,目前使用一阶参量yni进行量化,不足之处在于没有和具体的透镜参数和系统参数相联系,对于冷反射优化指导作用不大。...
利用光学不变量对焦平面系统进行近轴分析,得到了量化焦平面系统冷反射集中程度和变化率的两个一阶参量。以热辐射理论为基础,推导并总结了冷反射引入温差(NITD)和成像系统参数及环境参数的关系式。...