--- trunk/README 2007/10/08 16:20:26 28 +++ trunk/README 2007/10/08 16:22:56 44 @@ -1,30 +1,37 @@ -Gavare's eXperimental Emulator -- GXemul 0.4.1 -================================================== -Copyright (C) 2003-2006 Anders Gavare. + -------------------------------------------------------- + Gavare's eXperimental Emulator -- GXemul 0.4.6.1 + -------------------------------------------------------- -Overview -- What is GXemul? ------------------------------ -GXemul is an experimental instruction-level machine emulator. Several -emulation modes are available. In some modes, processors and surrounding -hardware components are emulated well enough to let unmodified operating -systems (e.g. NetBSD) run as if they were running on a real machine. - -Processors (ARM, MIPS, PowerPC) are emulated using a kind of dynamic -translation system. Performance is somewhere between traditional -interpretation and recompilation into native code. However, the dynamic -translation system used in GXemul does not (currently) generate native -code, and thus does not require platform-specific back-ends. In plain -English, this means that the dyntrans system works on any host platform. +Copyright (C) 2003-2007 Anders Gavare -Possible uses of the emulator include: - o) educational purposes, e.g. to learn how to write code for MIPS - o) hobby operating system development; the emulator can be used as a - complement to testing your code on real hardware +Overview -- What is GXemul? +----------------------------- + +GXemul is a framework for full-system computer architecture emulation. +Several processor architectures and machine types have been implemented. +It is working well enough to allow unmodified "guest" operating systems to +run inside the emulator, as if they were running on real hardware. + +The emulator emulates (networks of) real machines. The machines may +consist of ARM, MIPS, PowerPC, and SuperH processors, and various +surrounding hardware components such as framebuffers, busses, interrupt +controllers, ethernet controllers, disk controllers, and serial port +controllers. + +GXemul, including the dynamic translation system, is implemented in +portable C, which means that the emulator will run on practically any host +architecture. + +The documentation lists the machines and guest operating systems that can +be regarded as "working" in GXemul. The best working guest operating +systems are probably NetBSD/pmax and NetBSD/cats. + +Possible uses of GXemul include: o) running guest operating systems in a "sandboxed" environment @@ -33,6 +40,11 @@ NetBSD), to make sure that your source code is portable to those platforms + o) educational purposes, e.g. to learn how to write code for MIPS + + o) hobby operating system development; the emulator can be used as a + complement to testing your code on real hardware + o) simulating (ethernet) networks of computers running various operating systems, to study their interaction with each other @@ -41,21 +53,23 @@ Use your imagination :-) + GXemul's limitations -------------------- - o) GXemul is not (in general) a cycle-accurate simulator, because it does - not simulate things smaller than an instruction. Pipe-line stalls, - instruction latency effects etc. are more or less completely ignored. - - o) Hardware devices have been implemented in an ad-hoc and as-needed - manner, usually only enough to fool certain guest operating systems - (e.g. NetBSD) that the hardware devices exist and function well - enough for those guest operating systems to use them. + o) GXemul is not a cycle-accurate simulator, because it does not simulate + things smaller than an instruction. Pipe-line stalls, instruction latency + effects etc. are more or less completely ignored. + + o) Hardware devices have been implemented in an ad-hoc and as-needed manner, + usually only enough to fool certain guest operating systems, e.g. NetBSD, + that the hardware devices exist and function well enough for those guest + operating systems to use them. - A consequence of this is that a machine mode may be implemented well + (A consequence of this is that a machine mode may be implemented well enough to run NetBSD for that machine mode, but other guest operating - systems may not run at all, or behave strangely. + systems may not run at all, or behave strangely.) + Quick start @@ -68,7 +82,7 @@ variable settings, to get optimum performance. If you are impatient, and want to try out running a guest operating system -inside GXemul, read this: doc/guestoses.html#netbsdcatsinstall +inside GXemul, read this: doc/guestoses.html#netbsdpmaxinstall If you want to use GXemul for experimenting with code of your own, then I suggest you compile a Hello World program according to the tips @@ -78,6 +92,7 @@ more detailed information on how to use the emulator. + Feedback --------