Skip to content

Commit

Permalink
More documentation in README to encourage contributors
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasgpulcinelli committed Aug 22, 2023
1 parent 77c3631 commit 6e43abe
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,21 @@ This program is a simulator for the ICMC architecture (defined [here](https://gi
- Shortcuts that do not rely on keys that may not be present in a laptop keyboard (for instance insert, home and end keys);
- Support for windows, macOS and linux;

# How to Compile and Run the Program
# Installation
If you don't want to compile anything, go to the [releases page](https://github.com/lucasgpulcinelli/goICMCsim/releases) and download a precompiled binary for your system.

# Usage
The first thing you will want to do is add a program to run and test it. This can be done by either specifing MIF files in the ICMC architecture format in the command line or by using the file -\> open code/char MIF menu. Remember to always specify a char MIF, otherwise the code's outchars will always output blank characters!

# How to Compile from the Source Code
First, install a recent version of go (at least 1.13), either from your package manager or from [here](https://go.dev/doc/install). After that, you will also need git and a C compiler (MinGW is necessary on windows, and Xcode on macOS).

On debian/ubuntu based systems, you will need to install `libgl1-mesa-dev xorg-dev`;
On fedora and red hat based systems, you will need to install `libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel mesa-libGL-devel libXi-devel libXxf86vm-devel`;

Then, Just use `go build .` to compile and `./goICMCsim` to start an empty processor. You can see the command line options with `--help`.

If you don't want to clone the package and just want to compile and install it directly into $GOPATH/bin, just use `go install github.com/lucasgpulcinelli/goICMCsim@latest` (you will still need the tools listed before).
If you don't want to clone the repository and just want to compile and install it directly into $GOPATH/bin, just use `go install github.com/lucasgpulcinelli/goICMCsim@latest` (you will still need the tools listed before).

# How to add/modify instructions in the simulator
First, you will need to choose an opcode for your instruction, then add it in the constants list at [processor/Instruction.go](processor/Instruction.go).
Expand Down Expand Up @@ -53,3 +59,13 @@ func execINCMOD(pr *ICMCProcessor) error {
return nil
}
```

# What you can do to help the GO ICMC Simulator's development
An open source project is never complete. Please help the project by submitting issues and pull requests! They will be happly accepted if they help the overall project. Some examples of what can be done:
- Add a button to switch the instruction list from displaying dissasembled mnemonics and operands and start displaying raw data. This is essential to help programmers debug memory operations!
- Add a configurable clock speed to simulate the speed of the original processor.
- Fully complete the MIF syntax parsing in the MIF package and official quartus documentation.
- Increase processor speed by changing processor.fetchInstruction, for now the instruction fetching based on opcodes is the main bottleneck for performace.
- Add better error display (instead of relying on log.Println for unexpected errors)
- Add a right click options menu for each instruction in the list to edit memory in place or add breakpoints. This is possible using a new type and go struct inheritance in the instructionList and some remodeling in processor.RunUntilHalt.
- Documentation of instruction execution and mnemonic generation.

0 comments on commit 6e43abe

Please sign in to comment.