Skip to content

Tiny x86 emulator written in pure golang

License

Notifications You must be signed in to change notification settings

bobuhiro11/tiny_x86_emu

Repository files navigation

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!

About

Tiny x86 emulator written in pure golang

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published