TinyEMU, a RISC-V/i486 VM for Linux in the Browser
bellard.org
bellard.org
> Access to Internet is possible inside the emulator. It uses the websocket VPN offered by Benjamin Burns (see his blog[0]). The bandwidth is capped to 40 kB/s and at most two connections are allowed per public IP address. Please don't abuse the service.
[0] http://www.benjamincburns.com/2013/11/10/jor1k-ethmac-suppor...
Cross-domain requests won't work for the majority of sites.
And non-HTTP requests can't be done at all from the browser, it would be a pretty limited "network interface" if all it could do was call out to XMLHTTPRequest.
From the FAQ: "net_url sets the URL of the websocket VPN." I did this and it works great.
The one I first learned about was Tiny C Compiler. It is discontinued now, but it is an about 100K compiler,linker,assembler that can compile many programs like the links browser. https://bellard.org/tcc/
If that is too large, you can go with the project that inspired it, the Obfuscated Tiny C Compiler, a 2048 byte compiler that supports a subset of C. https://bellard.org/otcc/
All these projects are great for learning from.
TinyCC is still being developed: https://repo.or.cz/w/tinycc.git
You can then click on the "Startup link" labeled "click here" for the OS and CPU architecture you want to try out.
riscv64 Linux 4.15.0 (Fedora 29) X Window -> https://bellard.org/jslinux/vm.html?cpu=riscv64&url=https://...
>In the technical notes, an archive is given which explains how to build the various binary images. The readable source code of the JS PC emulator itself is not yet available. At this point, any mirroring or redistribution of the code needs my explicit permission.
And you can find the stuff referred to here:
http://web.archive.org/web/20141219111736/http://bellard.org...
---------
For tinyemu, my understanding is most of the code is in x86_machine.c , the actual cpu stuff is provided by kvm, the readme states:
>5) x86 emulator A small x86 emulator is included. It is not really an emulator because it uses the Linux KVM API to run the x86 code at near native performance.
> The x86 emulator uses the same set of VirtIO devices as the RISCV emulator and is able to run many operating systems.
>The x86 emulator accepts a Linux kernel image (bzImage). No BIOS image is necessary.
> The x86 emulator comes from my JS/Linux project (2011) which was one of the first emulator running Linux fully implemented in Javascript. It is provided to allow easy access to the x86 images hosted at https://bellard.org/jslinux