什么是微小的内存运行提供交互式的语言吗? [关闭] 什么是微小的内存运行提供交互式的语言吗? [关闭](What are the available interactive languages that run in tiny memory? [closed])

我找了通用编程语言

  • 有一个互动(实况编码)提示
  • 在通过本身32 KB的RAM或8 KB工作时,编译器托管一个单独的机器上
  • 上用少8-32 KB RAM总(没有MMU)的微控制器上运行。

下面是我的名单,到目前为止,我失去了什么?

  • Python:PyMite VM需要64K闪存,8K RAM。 目标LPC,SAM7和ATmegas具有8K以上。 托管。
  • Lua的 :该eLua FAQ建议256K闪存,64K RAM。
  • FORTH: amforth需要8K闪光灯,150个字节RAM,上的ATmega 30字节的EEPROM。
  • 方案腋下计划的最小目标是32K闪存,SRAM 4K的LPC2103。
  • C: 互动Ç运行在68HC11,没有闪光灯和32K SRAM。 托管。
  • C: picoc一个开源的,交叉编译,互动式空调系统。 当编译为AVR,它需要63K闪存,8K RAM。 该RAM可以用努力保持表中闪光减少。
  • C ++: AngelScript为主,C / C ++一样方便本地调用脚本语言的开源,字节码。
  • TCL: TinyTCL运行于DOS,60K二进制。 看起来容易移植。
  • BASIC: TinyBasic :初始化用64K堆,可能是可调的。
  • 口齿不清
  • 后记 :(我还没有找到一个FOSS实现低内存还)
  • bitlash :用于Arduino的(的ATmega)的交互式命令外壳。 又见AVRSH

Answer 1:

一个自制第四运行时可以在很少的内存确实可以实现。 我知道谁在70年代上Cosmac造一只。 核心运行时只是30 个字节。



Answer 2:

我听说CHIP-8,XPL0,PicoC和Objective CAML已经被移植到了图形计算器。 维基百科“LEGO MINDSTORMS”文章列出了一堆涉嫌乐高RCX或乐高NXT平台上运行的编程语言。 其中的任何满足你的“活代码”标准是什么?

你可能想在第四维基检查出其他微控制器的Forth。 它列出了至少4个Forth系统为爱特梅尔AVR:amforth(你已经提到),PFAVR,avrforth和ByteForth。
(链接到这些口译员,以及这个问题的StackOverflow,被列入“ 嵌入式系统 ”维基)。



Answer 3:

我会建议LUA(或eLUA http://www.eluaproject.net/ )。 我已经“移植” LUA到的Cortex-M3而回。 从我的头顶它有60〜100KB Flash容量,需要约20KB的RAM运行。 我没有剥离下来到最基本的要素,但根据您的应用程序,这可能是不够的。 还是有优化的余地,尤其是关于RAM的要求,但我怀疑你可以运行它在8KB舒适。



Answer 4:

一些AVR口译/虚拟机:

  1. http://www.cqham.ru/tbcgroup/index_eng.htm
  2. http://www.jcwolfram.de/projekte/avr/chipbasic2/main.php
  3. http://www.jcwolfram.de/projekte/avr/chipbasic8/main.php
  4. http://www.jcwolfram.de/projekte/avr/main.php
  5. http://code.google.com/p/python-on-a-chip/
  6. http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=688&item_type=project
  7. http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=626&item_type=project
  8. http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=460&item_type=project
  9. http://www.harbaum.org/till/nanovm/index.shtml


Answer 5:

雷恩符合您的条件-在默认情况下它的配置为只使用4K的RAM。 据我所知还没有看到任何实际使用中,因为我写它的人决定,他并不需要在目标系统上运行的全资毕竟一个解释。

语言由ML和第四的影响最为明显。



Answer 6:

你有没有考虑一个用C口微小基础 ? 或者,也许重写UCSD帕斯卡对机器从Z-80的架构?

严重的是,虽然JavaScript的会好好嵌入式脚本语言,但我不知道是什么的最低内存要求为VM + GC,也不怎么难去除的操作系统的依赖。 我玩NJS而回,这有可能满足您的需求。 这一个是在编译器是用JavaScript编写的(自主机)有趣。



Answer 7:

您可以在非常强大的多任务处理AvrCo帕斯卡尔看一看的AVR。 你可以试试http://www.e-lab.de 。 MEGA8 / 88版本是免费的。 有吨的驱动程序和模拟器JTAG调试器和所有标准的设备的漂亮活的或模拟可视化(LCDCHAR,LCDGRAPH,7SEG,14SEG,LEDDOT,键盘,RC5,伺服,步进...)的。



Answer 8:

你错过EmbedVM,网页这里 ,svn的位置 。 记住检查出这两个[ 12在头版]视频;)

从主页:

EmbedVM是用于与类C语言前端微控制器小型嵌入虚拟机。 它已经过测试与GCC和AVR微控制器。 但是,随着虚拟机是相当简单,它应该很容易将它移植到其他架构。

虚拟机模拟了16位CPU,可以访问多达64KB的内存。 它只能在16位值和16位和8位值的数组操作。 存在用于复杂的数据结构(结构,对象等)的支持。 一个函数最多32个局部变量和参数32可以有。

另外该VM的存储器,一个小的结构保持所述VM状态和存储器的合理量的EmbedVM功能需要在堆栈上有用于VM没有额外的内存需求。 尤其是VM不依赖于任何dymaic内存管理。

EmbedVM针对尺寸和简单起见,不执行速度优化。 虚拟机本身上的AVR单片机占用约程序存储器3KB。 在频率为16MHz运行的AVR ATmega168的虚拟机可以执行每毫秒约75 VM指令。

所有的内存访问由VM完成使用用户回调函数parformed。 因此,有可能有一些或所有外部存储设备,闪存等,或者“内存映射”的硬件功能的VM虚拟机内存。

这个编译器是UNIX / Linux的命令行工具,其读取在* .evm文件并生成在vaious格式字节码(二进制文件,英特尔十六进制,C数组的初始化和一个特殊的调试输出格式)。 它也产生,可用于在从主机应用程序的虚拟机存储器访问数据的符号文件中。

在类C语言看起来是这样的: http://svn.clifford.at/embedvm/trunk/examples/numberquizz/vmcode.evm



Answer 9:

我会建议MY-BASIC ,运行在最小的8 KB RAM,而且容易端口。



Answer 10:

还有的JavaScript,通过Espruino

这是一个微专建成并有建立了适合全系统到少8kB的RAM各种不同的芯片(主要是STM32s)。



Answer 11:

你有没有考虑简单地使用/bin/sh通过提供BusyBox的 ? 或在的小脚本语言 ,他们建议?



Answer 12:

序言- http://www.gprolog.org/

根据谷歌搜索“的Prolog小”,避免连接内置谓词可执行文件的尺寸可以做得非常小。



Answer 13:

我会建议使用Python。 但是现在唯一的问题是内存开销吗? 所以,我对于谁可能被卡在这个问题后来人好主意。

第一件事,第一,写一个BF解释(或从某处刚刚获得源代码)。 解释器将是非常小的。 此外BF是图灵完整的语言。 现在,你需要用Python语言编写的代码,然后transpiler它使用bfpy到BF( https://github.com/felko/bfpy/blob/master/README.md )。 我给你用最少的开销解决方案,我敢肯定有BF的解释会很容易留下RAM使用的10KB以下。



Answer 14:

在问题或答案列表中的语言都没有被证明是超级简单的编辑和整合的需求满意到现有的微控制器项目(披露:我其实没有尝试的建议,每一个)。

我发现,而不是tinyscript这是一个单一.c + .h与源文件中要编译我的项目,需要被提供的唯一附加配置文件void outchar(int c)如果你不”可以为空牛逼需要从脚本输出。

对我来说,执行速度远远高于易于构建和集成和互操作使用C的不那么重要,因为我的使用情况,主要只是调用顺序一些C函数。



Answer 15:

我一直在使用在Blackfin处理器我以前的工作busybox的。

我们编译的Perl + PHP它,改变后的S /叉/ vfork的/ G,它的工作很不错...更多或更少。 由于没有一个MMU是不是一个好主意。 该内存碎片会很容易地杀死服务器。 我所做的只是:

for i in `seq 1 100`; do wget http://black-fin-ip/test.php; done

它,而我走我的老板告诉他,服务器会在生产中死亡死亡:)



Answer 16:

二郎山- http://erlang.org/

它可以适应2MB

http://www.experts123.com/q/is-erlang-small-enough-for-embedded-systems.html