一尘不染

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

linux

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

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

它是如何工作的?


阅读 265

收藏
2020-06-03

共1个答案

一尘不染

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

所以这是真实的。

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

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

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

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

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

2020-06-03