Embedded 小型RISC仿真器

Embedded 小型RISC仿真器,embedded,emulation,cpu-architecture,embedded-language,Embedded,Emulation,Cpu Architecture,Embedded Language,我正在寻找将虚拟机构建到游戏中,我想知道是否有人知道任何真正简单的虚拟机(我认为RISC/PIC接近我想要的),通常用于嵌入式项目,如控制机器人、电机、传感器等。我主要关心的是,如果我自己动手,就必须编写编译器/汇编程序。我很乐意使用已经存在的工具,或者以最简单的形式使用一个C编译器来编译:-p 我真的不想在这里重新发明轮子,但我还需要成千上万的轮子在虚拟世界中运行,所以它们必须尽可能地简单和快速。正如一个人已经提到的那样,我也不关心现实世界中的问题,比如时间、公交车和所有有趣的事情。我认为他们

我正在寻找将虚拟机构建到游戏中,我想知道是否有人知道任何真正简单的虚拟机(我认为RISC/PIC接近我想要的),通常用于嵌入式项目,如控制机器人、电机、传感器等。我主要关心的是,如果我自己动手,就必须编写编译器/汇编程序。我很乐意使用已经存在的工具,或者以最简单的形式使用一个C编译器来编译:-p

我真的不想在这里重新发明轮子,但我还需要成千上万的轮子在虚拟世界中运行,所以它们必须尽可能地简单和快速。正如一个人已经提到的那样,我也不关心现实世界中的问题,比如时间、公交车和所有有趣的事情。我认为他们的虚拟时钟将被限制在一些相当慢的东西上;最终,我可能不得不研究本机编译,以使它们运行得更快,但现在我只是把原型放在一起,以获得概念的一般证明

作为输入,我计划在圆柱体周围安装距离、光线、材料和触摸传感器(16个,可能32个),然后只需2个电机进行定向输出,以控制每侧的一种车轮。从本质上讲,处理不会太费力,世界也会变得足够简单,这样机器就不必在简单的任务上投入大量的处理能力


在内存方面,我希望他们能够存储足够的数据,让他们能够在不需要干预的情况下独自呆上几天,构建地图和收集统计数据。我不喜欢8bit会因为处理或内存而削减,但16bit绝对是一个竞争者。32位和64位只会推动它,它们不可能拥有超过1mb的内存——可能更接近256-512k。(Bill one说640k就足够了,为什么我不能!!)

如果你想在现实世界中扎根,最常用的嵌入式RISC微控制器之一就是PIC系列。谷歌提供了几个模拟器,但我认为大多数人都无法获得这些源代码

另一种可能性是QEMU,它已经模拟了几种ARM类型


当然,如果您对模拟真实世界的设备不感兴趣,那么您可以更轻松、更好地运行自己的设备。只有你需要的,而不是陷入混乱的状态标志,溢出位,有限的总线宽度,RAM定时等。

< P>如果你想简单,考虑曼彻斯特马克。见第15页。这台机器有7条指令。为它编写一个翻译程序大约需要一个小时。不幸的是,这些说明非常有限(这就是为什么几乎所有的机器规格都可以放在一页上的原因)

Javier自己滚动的方法非常实用。设计和制造一台微型机器需要两天的时间。几年前,我为一个项目构建了一个微型虚拟机,用一个简单的可视化调试器编写这个虚拟机花了我两天的时间


还有-它必须是RISC吗?比如说,您可以选择68K,68K是gcc的一个众所周知的目标。

我为一位朋友写了一封信,他希望在一个具有16K左右RAM的嵌入式控制器上运行VM语言。(但它允许在编写的代码中每个进程最多64k。)它包括一个用于一种愚蠢的小编程语言的编译器。这都是,呃,非常基本的,没有太多的用处,但这正是你在第一段中描述的。

第四个“虚拟机”就这么简单。16位地址空间(通常)、16位数据字、两个堆栈、内存。Loeliger的“线程解释语言”向您介绍了如何在Z80上构建FORTH解释器。

许多编写游戏程序和其他应用程序的人在应用程序中嵌入了一种语言,允许用户编写小程序

据我所知,最受欢迎的大致上最受欢迎的一级(尽管“更受欢迎”并不一定意味着“更好”)似乎是:

  • 特定于域的语言是为这个特定的应用程序定制的,在其他任何地方都没有使用过
  • 卢阿
  • Tcl
  • Python,通常是简化的子集,如PyMite
  • JavaScript
  • 口齿不清
  • 天使脚本
  • XPL0
  • 松鼠
  • 哈斯克尔
  • NPCI(纳米伪C)
  • 解释一些硬件机器语言(为什么这是最不受欢迎的选择?原因如下)
您可能想查看Gamedev StackExchange,特别是像这样的问题

您可能想查看StackOverflow标签上的一些问题; 比如 , , 等等

这些语言的许多实现都使用某种 内部。 通常,同一高级编程语言(如JavaScript)的两个不同实现在内部使用两种完全不同的字节码语言()。 通常有几种高级编程语言编译成相同的底层字节码语言——例如,Python的Jython实现、JavaScript的Rhino实现、Tcl的Jacl实现、JScheme和Scheme的其他几种实现,以及Pascal的几种实现;全部编译为相同的JVM字节码

详细信息

为什么要使用脚本语言而不是解释某些硬件机器语言

为什么?? 以获得简单性和更快的开发

更快的发展

人们通常使用脚本语言而不是编译语言来加快工作速度

使初始原型正常工作通常要快得多——解释器在幕后处理机器语言强制您显式写出的一大堆内容:将变量的初始值设置为零、子程序prolog和子程序epilog代码、malloc和realloc以及空闲和相关的内存管理内容,增加