aboutsummaryrefslogtreecommitdiff
path: root/sim/mips/README.Cygnus
diff options
context:
space:
mode:
Diffstat (limited to 'sim/mips/README.Cygnus')
-rw-r--r--sim/mips/README.Cygnus38
1 files changed, 38 insertions, 0 deletions
diff --git a/sim/mips/README.Cygnus b/sim/mips/README.Cygnus
new file mode 100644
index 0000000..06c5e43
--- /dev/null
+++ b/sim/mips/README.Cygnus
@@ -0,0 +1,38 @@
+> README.Cygnus
+-------------------------------------------------------------------------------
+
+The following are the main reasons for constructing the simulator as a
+generator:
+
+1) Avoid large fixed decode source file, with lots of #ifs controlling
+ the compilation. i.e. keep the source cleaner, smaller and easier
+ to parse.
+
+2) Allow optimum code to be created, without run-time checks on
+ instruction types. Ensure that the simulator engine only includes
+ code for the architecture being targetted. e.g. This avoids
+ run-time checks on ISA conformance, aswell as increasing
+ throughput.
+
+3) Allow updates to the instruction sets to be added quickly. Having a
+ table means that the information is together, and is easier to
+ manipulate. Having the table generate the engine, rather than the
+ run-time parse the table gives higher performance at simulation
+ time.
+
+4) Keep all the similar simulation code together. i.e. have a single
+ place where, for example, the addition code is held. This ensures that
+ updates to the simulation are not spread over a large flat source
+ file maintained by the developer.
+
+-------------------------------------------------------------------------------
+
+To keep the simulator simple (and to avoid the slight chance of
+mis-matched files) the manifests describing an engine, and the
+simulator engine itself, are held in the same source file.
+
+This means that the engine must be included twice, with the first pass
+controlled by the SIM_MANIFESTS definition.
+
+-------------------------------------------------------------------------------
+> EOF README.Cygnus