Wishlist

Here's a list of some features that could be implemented in a future version of EduMIPS64:

Core

  • Execution starts from _main label, so #include pragmas can be placed at the beginning of code
  • Branch Delay Slot behavior (implicit/explicit) can be selected in preferences (assigned to Benedetta Sciré and Sandra Zappalà)
  • Clear separation between the core API and the GUI-related code. This will allow:
  • Command-line interface (CLI) with clear file interface for input and output
  • Instructions and data should use the same address space
  • SYSCALL instructions make use of the real interface used by modern OSes on MIPS CPUs (check the book "See MIPS Run", the interface with R14 and R1 has been inherited by WinDLX but is not MIPS-compatible)
  • Program does not crash if user addresses memory that hasn't been initialized and GUI synchronization is enabled
  • Check that the first and the second execution of a program provide exactly the same values in the statistics window

FPU

  • Single precision floating point instructions
  • Implementing a configuration modality by which a specific MIPS64 floating point pipeline is simulated.

Cache

  • Dinero front-end with graphical selection of parameters (e.g. drop-down menu for associativity etc.)
  • Dinero ported to Java and integrated into EduMIPS64 (text output only, no GUI synch)
  • Integrated basic cache simulator synchronized with GUI (insert bubbles) (assigned to Samuele Di Cataldo)

Optional

  • Better descriptions for instructions in the pipeline window (e.g. now a series of DADDI does not give the impression of flowing into the pipe; using smaller fonts all the parameters could be shown, or the instructions could be preceded by their addresses in memory)
  • Clickable pipeline window that shows info about the "history" of the clicked instruction
  • Statistics window that shows the number of instructions of each type (load/store, jump, ALU)
  • Complete structured help (JavaHelp?)
  • Parser capable of "eating" Assembly code generated by GCC
  • A single menu item (with hot-key) to reset + clear messages + run (may be called "Rerun"/"Riesegui") will be appreciated by students
  • Add support for every MIPS64 ISA instruction
  • Add support for other RISC dialects such as SPARC64 or fork another version (the unique version could be called EduRISC64 and the forked version EduSPARC64)

Testing

  • Creation of a suite of regression tests based on the JUnit (or equivalent) framework (requires separation of core and GUI code)

Performance

  • Shortening the start-up time via some profiling
  • Faster "About" dialog

Fancy

  • Integrated editor with syntax-highlighting (assigned to Piersanto Pugliares)
  • Some Easter-Egg!!! (other than Timmy things)