GXemul is a computer architecture emulator being developed by Anders Gavare. It is available as free software under a revised BSD-style license. In 2005, Gavare changed the name of the software project from mips64emul to GXemul. This was to avoid giving the impression that the emulator was confined to the MIPS architecture, which was the only architecture being emulated initially. Although development of the emulator is still a work-in-progress, since 2004 it has been stable enoughto let various unmodified guest operating systems run as if they were running on real hardware. Currently emulated processor architectures include ARM, MIPS, M88K, PowerPC, and SuperH. Guest operating systems that have been verified to work inside the emulator are NetBSD, OpenBSD, Linux, HelenOS, Ultrix, and Sprite. Apart from running entire guest operating systems, the emulator can also be used for experiments on a smaller scale, such as hobby operating system development, or it can be used as a general debugger.
Dynamic Translation
GXemul's processor emulation uses dynamic translation, to convert the emulated processor's instructions into an intermediate representation. The IR is in a format which can be executed by the host. In other words, it should be possible to port the emulator to new host architectures with just a recompilation; there is no need to implement a native code generation backend for each host architecture to get it running.
Usage Example
Assuming you have downloaded a NetBSD/pmax 5.0 CD-ROM ISO image, the following commands will let you install NetBSD onto an emulated DECstation 5000 Model 200 : dd if=/dev/zero of=nbsd_pmax.img bs=1024 count=1 seek=3000000 gxemul -e 3max -d nbsd_pmax.img -d b:pmaxcd-5.0.iso The first command creates an empty disk image, and the second command launches GXemul. The -e option specifies the machine to emulate, and the -d options add disk images. The first disk image is the newly created disk image where NetBSD will be installed. The second is the CD-ROM ISO image; the b: modifier flag means that the system should boot from the ISO image, instead of the first available disk image. Installing NetBSD within the emulator should be very similar to installing it on real hardware. Once the installation has completed, the following command should start NetBSD from the disk image: gxemul -e 3max -d nbsd_pmax.img