CRI Radio

Apr 23, 2007

GXemul

GXemul

http://gavare.se/gxemul/

Introduction

GXemul is an instruction-level machine emulator I'm developing in my spare time, mostly to try out various emulation-related ideas, for fun, and to learn about the peculiarities of different hardware architectures.

The emulator emulates real machines, consisting of processors (ARM, MIPS, PowerPC, SuperH, emulated using dynamic translation) and various surrounding hardware components such as framebuffers, interrupt controllers, busses, disk controllers, and serial controllers. It is working well enough to allow several unmodified "guest" operating systems to run inside the emulator. Here are some examples:

image
NetBSD/pmax
image
OpenBSD/pmax
image
NetBSD/cats
image
OpenBSD/cats
image
Sprite for
DECstation
image
Ultrix/RISC
image
Debian GNU/Linux
for DECstation
image
Linux for
Dreamcast

The emulator does not have to run entire guest operating systems; it can be used for smaller experiments as well. Please see the README file of the latest stable release for some examples.

Here is a collection of links to processor manuals and other interesting things, useful when writing an emulator/simulator.


Download

I have released the source code as Free Software. It should be possible to compile the source code on most Unix-like systems with few or no modifications. The latest stable release is available for download here:

gxemul-0.4.4.1.tar.gz (2007-03-18)

README
Release notes
Documentation
Man page

(The README file, release notes, documentation, etc. are included in the source tarball, but also available here for quick access.)

As far as I am aware, this was the first emulator released as Free Software capable of running unmodified MIPS-targeted operating systems, such as a default NetBSD installation. (Compare this to e.g. Stanford University's SimOS, which was capable of running a specific modified version of IRIX.)

Older releases can be found here. I also upload unstable development snapshots every now and then: Here.


Current development

My main goal is to have fun, and to use the emulator as a base for various experiments, so things have a tendency to get implemented when/if I feel like they are fun enough. I also have other things to do in my spare time :), so right now development has slowed down a bit.

I have not decided yet on any specific work package to concentrate on after 0.4.4.1.