This is an experimental x86 emulator. Currently, this project is targeted only to xv6 as guest OS.
https://bobuhiro11.net/tiny_x86_emu/
Please make sure that make, go (>=1.11), gcc, objdump, nasm and ndisasm are installed. For example, if you are using ubuntu, you can install them using the following command.
$ sudo apt-get install -y nasm gcc git tar wget make bsdmainutils
$ wget https://dl.google.com/go/go1.11.linux-amd64.tar.gz
$ sudo tar -C /usr/local -zxf go1.11.linux-amd64.tar.gz
make
command will build two version of emulators and xv6 image described as below:
- Emulator for Host OS: An emulator execution binary for the host OS is created. Its name is
tiny_x86_emu
. - Emulator for wasm: A wasm version of the emulator is built to run in the browser. Its name is
wasm/tiny_x86_emu.wasm
. - xv6 image: The makefile for xv6 is also executed recursively.
# Build two version of emulators and guest xv6 image
$ make
# Execute CLI version emulator in your terminal.
$ ./tiny_x86_emu -f xv6-public/xv6.img
# Start web server to host wasm file.
# Then, please open http://localhost:8000 in your browser.
$ ./httpserv
make test
command will execute all tests.
Pull requests from anyone are welcome!