dcexpert 发表于 2021-5-17 21:47

嵌入式系统的微型JS引擎 Elk

<p>Elk是一个小型的可嵌入JavaScript引擎,它实现了ES6的一个小型子集。ELK 是为微控制器开发而设计的,它允许在JavaScript中开发代码,而不是用C/C++编写代码。另一个用例是为客户提供一个安全、受保护的脚本环境,用于产品定制。</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp;</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(&#39;a&#39;) === &#39;string&#39;</li>
        <li>While:While(&hellip;){&hellip;}</li>
        <li>条件:if(&hellip;)。。。else。。。</li>
        <li>简单类型:let a, b, c = 12.3, d = &#39;a&#39;, 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字符串:&#39;Київ&#39;.length === 8</li>
</ul>

<p><br />
<strong>不支持的功能</strong></p>

<ul>
        <li>不支持 no。使用var、const、let</li>
        <li>不支持 , , . 使用 do、switch、for、while</li>
        <li>没有函数。使用=&gt;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>&nbsp;</p>

<p>**** Hidden Message *****</p>

beatles 发表于 2021-5-17 22:43

<p>8位的都能移植,确实需要的资源少。移植试试<img height="50" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan33.gif" width="58" /></p>

freebsder 发表于 2021-5-17 23:16

<p>层出不穷的语言移植</p>

annysky2012 发表于 2021-5-18 08:14

强大精干

sjh.123 发表于 2021-5-20 08:37

<p>学习下,涨涨见识</p>

9zhmke 发表于 2021-5-20 09:17

<p>不容易啊,这么占内存占CPU的东西都能移植,给软件爱好者们带来更多的福音,点赞!</p>

bigbat 发表于 2021-5-20 11:25

<p>佩服@<a href="https://home.eeworld.com.cn/space-uid-573537.html" target="_blank">dcexpert</a>的挖宝精神,我记得楼主弄过嵌入式的GOlang、Python什么的。这个喜好不错点个赞!争取给大家带来更多新奇的东西哦!</p>

路飞d梦想 发表于 2021-5-20 19:47

<p>来看看版主又发现了什么。</p>

ftd东良 发表于 2021-6-4 16:39

<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>

43037384 发表于 2024-5-16 20:57

<p>牛逼啊!让我看看是什么</p><br/>
页: [1]
查看完整版本: 嵌入式系统的微型JS引擎 Elk