Skip to content

Latest commit

 

History

History
47 lines (31 loc) · 2 KB

README.md

File metadata and controls

47 lines (31 loc) · 2 KB

tiny_x86_emu wercker status GoDoc Go Report Card Coverage Status

This is an experimental x86 emulator. Currently, this project is targeted only to xv6 as guest OS.

Demo

https://bobuhiro11.net/tiny_x86_emu/

screenshot

Preparation

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

Usage

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

Testing

make test command will execute all tests.

Contribution

Pull requests from anyone are welcome!