嵌入式系统的微型JS引擎 Elk
<p>Elk是一个小型的可嵌入JavaScript引擎,它实现了ES6的一个小型子集。ELK 是为微控制器开发而设计的,它允许在JavaScript中开发代码,而不是用C/C++编写代码。另一个用例是为客户提供一个安全、受保护的脚本环境,用于产品定制。</p><p> </p>
<p></p>
<p> </p>
<p><strong>特点:</strong></p>
<ul>
<li>跨平台。适用于从8位微控制器到64位服务器</li>
<li>零依赖性。通过ISO C或ISO C++编译器干净地构建</li>
<li>易于嵌入:只需复制到源代码treeelk.celk.h</li>
<li>非常小且简单的嵌入API</li>
<li>可以从JavaScript调用本地C/C++函数,反之亦然</li>
<li>不使用malloc。仅使用给定的内存缓冲区操作</li>
<li>占用空间小:闪存/磁盘约20KB,核心虚拟机约100字节RAM</li>
<li>没有字节码。直接解释JS代码</li>
</ul>
<p><strong>支持的功能</strong></p>
<ul>
<li>操作:除以下外的所有标准JS操作:
<ul>
<li>!=, . 使用严格比较,==、!==、===</li>
<li>没有三元运算符a?b:c</li>
<li>没有计算成员访问</li>
</ul>
</li>
<li>类型:typeof('a') === 'string'</li>
<li>While:While(…){…}</li>
<li>条件:if(…)。。。else。。。</li>
<li>简单类型:let a, b, c = 12.3, d = 'a', e = null, f = true, g = false;</li>
<li>函数:let f = function(x, y) { return x + y; };</li>
<li>对象:let obj={f:function(x){return x*2};obj.f(3);</li>
<li>每个语句必须以分号结尾;</li>
<li>字符串是二进制数据块,而不是Unicode字符串:'Київ'.length === 8</li>
</ul>
<p><br />
<strong>不支持的功能</strong></p>
<ul>
<li>不支持 no。使用var、const、let</li>
<li>不支持 , , . 使用 do、switch、for、while</li>
<li>没有函数。使用=>let f = function(...) {...};</li>
<li>没有数组、闭包、原型、this、new、delete</li>
<li>没有标准库:no , , , , Date、Regexp、Function、String、Number</li>
</ul>
<p><br />
<strong>性能</strong><br />
<br />
由于Elk会实时解析和解释JS代码,所以它不应该用于性能关键的场景。</p>
<p> </p>
<p>**** Hidden Message *****</p>
<p>8位的都能移植,确实需要的资源少。移植试试<img height="50" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan33.gif" width="58" /></p>
<p>层出不穷的语言移植</p>
强大精干 <p>学习下,涨涨见识</p>
<p>不容易啊,这么占内存占CPU的东西都能移植,给软件爱好者们带来更多的福音,点赞!</p>
<p>佩服@<a href="https://home.eeworld.com.cn/space-uid-573537.html" target="_blank">dcexpert</a>的挖宝精神,我记得楼主弄过嵌入式的GOlang、Python什么的。这个喜好不错点个赞!争取给大家带来更多新奇的东西哦!</p>
<p>来看看版主又发现了什么。</p>
<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>
<p>牛逼啊!让我看看是什么</p><br/>
页:
[1]