1 |
Gavare's eXperimental Emulator -- GXemul 0.3.6.2 |
Gavare's eXperimental Emulator -- GXemul 0.4.4.1 |
2 |
==================================================== |
==================================================== |
3 |
|
|
4 |
Copyright (C) 2003-2005 Anders Gavare. |
Copyright (C) 2003-2007 Anders Gavare. |
5 |
|
|
6 |
|
|
7 |
Overview |
Overview -- What is GXemul? |
8 |
-------- |
----------------------------- |
9 |
|
|
10 |
GXemul is an experimental instruction-level machine emulator. Several |
GXemul is an experimental instruction-level machine emulator. Several |
11 |
emulation modes are available. In some modes, processors and surrounding |
emulation modes are available. In some modes, processors and surrounding |
12 |
hardware components are emulated well enough to let unmodified operating |
hardware components are emulated well enough to let unmodified operating |
13 |
systems (e.g. NetBSD) run as if they were running on a real machine. |
systems (e.g. NetBSD) run as if they were running on a real machine. |
14 |
|
|
15 |
The processor architecture best emulated by GXemul is MIPS, but other |
Processors (ARM, MIPS, PowerPC, SuperH) are emulated using dynamic |
16 |
architectures are also partially emulated. |
translation. Unlike some other dynamically translating emulators, GXemul |
17 |
|
does not need to generate native code, only a "runnable intermediate |
18 |
|
representation", and will thus run on any host architecture. |
19 |
|
|
20 |
|
The documentation lists the machines and guest operating systems that can |
21 |
|
be regarded as "working" in GXemul. The best working guest operating |
22 |
|
systems are probably NetBSD/pmax and NetBSD/cats. |
23 |
|
|
24 |
|
Possible uses of the emulator include: |
25 |
|
|
26 |
|
o) educational purposes, e.g. to learn how to write code for MIPS |
27 |
|
|
28 |
|
o) hobby operating system development; the emulator can be used as a |
29 |
|
complement to testing your code on real hardware |
30 |
|
|
31 |
|
o) running guest operating systems in a "sandboxed" environment |
32 |
|
|
33 |
|
o) compiling your source code inside a guest operating system which you |
34 |
|
otherwise would not have access to (e.g. various exotic ports of |
35 |
|
NetBSD), to make sure that your source code is portable to those |
36 |
|
platforms |
37 |
|
|
38 |
|
o) simulating (ethernet) networks of computers running various |
39 |
|
operating systems, to study their interaction with each other |
40 |
|
|
41 |
|
o) debugging code in general |
42 |
|
|
43 |
|
Use your imagination :-) |
44 |
|
|
45 |
|
|
46 |
|
GXemul's limitations |
47 |
|
-------------------- |
48 |
|
|
49 |
|
o) GXemul is not (in general) a cycle-accurate simulator, because it does |
50 |
|
not simulate things smaller than an instruction. Pipe-line stalls, |
51 |
|
instruction latency effects etc. are more or less completely ignored. |
52 |
|
|
53 |
|
o) Hardware devices have been implemented in an ad-hoc and as-needed |
54 |
|
manner, usually only enough to fool certain guest operating systems |
55 |
|
(e.g. NetBSD) that the hardware devices exist and function well |
56 |
|
enough for those guest operating systems to use them. |
57 |
|
|
58 |
|
A consequence of this is that a machine mode may be implemented well |
59 |
|
enough to run NetBSD for that machine mode, but other guest operating |
60 |
|
systems may not run at all, or behave strangely. |
61 |
|
|
62 |
|
|
63 |
Quick start |
Quick start |
64 |
----------- |
----------- |
65 |
|
|
66 |
To compile, type './configure' and then 'make'. This should work on most |
To compile, type './configure' and then 'make'. This should work on most |
67 |
Unix-like systems. If not, then please mail me a bug report. |
Unix-like systems. If it does not, then please mail me a bug report. |
68 |
|
|
69 |
|
You might want to experiment with various CC and CFLAGS environment |
70 |
|
variable settings, to get optimum performance. |
71 |
|
|
72 |
If you are impatient, and want to try out running a guest operating system |
If you are impatient, and want to try out running a guest operating system |
73 |
inside GXemul, please read this: doc/guestoses.html#netbsdinstall |
inside GXemul, read this: doc/guestoses.html#netbsdcatsinstall |
74 |
|
|
75 |
If you want to use GXemul for experimenting with code of your own, |
If you want to use GXemul for experimenting with code of your own, |
76 |
then I suggest you compile a Hello World program according to the tips |
then I suggest you compile a Hello World program according to the tips |