当前位置: 首页 > 面试题库 >

Fabrice Bellard的Javascript中的Linux模拟器如何工作?

尉迟清野
2023-03-14
问题内容

今天,当我看到用Javascript 编写的
Linux模拟器时,我感到非常震惊:http :
//bellard.org/jslinux/

它编译C程序,具有vi和emacs,支持所有shell命令,等等。

它是如何工作的?


问题答案:

起初,我还认为这只是将您连接到VM的终端仿真器,但并非如此。如果观察网络连接,则可以看到启动后不再传输任何数据。

所以这是真实的。

CPU并不是魔术。实际上,它所做的只是从内存中读取字节并根据命令的含义修改RAM。

在这种情况下,CPU仿真器基于qemu代码。他要做的是创建一个函数数组,其中索引是PC(程序计数器)的下一个字节。

现在,您只需要一个简单的linux发行版,不需要任何特殊的CPU命令,例如浮点算术或MMX代码和voila。

有趣的是野兽的速度。整个过程有点迟钝,但是然后是浏览器中的JavaScript。

结论:令人印象深刻。等不及要看C64模拟器了:-)



 类似资料:
  • 它从不完全加载,最后总是说等待300秒才能加载。我尝试过不同的方法来修复它,但都不管用。如何让它真正加载?

  • 问题内容: 我正在开发一个Web应用程序,该应用程序显然在iOS设备中存在问题。问题是我不拥有iOS设备,而是在Linux Ubuntu中进行开发。我正在寻找一种在Linux(尤其是浏览器)中仿真/模拟此OS的方法,但是还没有找到任何东西。 到目前为止,我发现的是iOS SDK的Simulator,但这是针对Mac的。还有一些Windows模拟器。有人做过吗? 问题答案: 我能想到的唯一解决方案是

  • 我在localhost中有一个wamp服务器。我试图从我的android应用程序发出http请求。但我不能把它弄对。许多人说10.0.2.2:8080将从emulator指向localhost。所以我试着从emulator在web浏览器中打开它。我输入的url是“10.0.2.2/cifi/test.php”。但emulator弹出错误为“网络:连接超时” 需要说明:如何使我的wamp服务器在本地

  • 这个问题令人头痛,所以我想分享我的解决方案。它开始安装Android SDK(不安装Android Studio)、Dart和FLATTER的要求,并最终在Windows主机上运行FLATTER应用程序。 ================== ================== === 仅获取Android(Linux)的命令行工具。 将以下行附加到文件: 继续安装 接受所有许可证。 在文件:

  • CORE https://github.com/coreemu/core IMUNES https://github.com/imunes/imunes Cloonix http://virtual-network-kvm.net/ Mininet http://mininet.org/ Mininet-WiFi http://www.ramonfontes.com/mininet-wifi/ V

  • 问题内容: 有没有一种简单的方法可以在模拟器内部模拟低内存?我有兴趣执行类似于此帖子的资源清理 问题答案: 从外壳调用命令。 这会将当前内存限制设置为10000 Kb,这样以后从此Shell调用的所有应用程序将无法访问更多内存。