Giter Site home page Giter Site logo

fillet-o-neumann's Introduction

fillet-o-neumann

example workflow

Description

A simulation for a Von Neumann based Computer Architecture using Java.

Main Memory Architecture

A von neumann Architecture in which program data and instruction data are stored in the same memory
Main Memory Size 2048 * 32 from 0 to 1023 for instructions and from 1024 to 2047 for data

Registers

  • 31 General purpose Registers from R1 to R31
  • 1 Zero Registers named R0
  • 1 program counter PC Registers Size 32 bits

Instruction Architecture

Instruction Set supported
Name Format Operation
ADD ADD R1 R2 R3 R1 = R2 + R3
SUB SUB R1 R2 R3 R1 = R2 - R3
MUL MUL R1 R2 R3 R1 = R2 * R3
MOVI MOVI R1 IMM R1 = IMM
JEQ JEQ R1 R2 IMM\label IF(R1 == R2) {PC = PC+1+IMM\ PC = label }
AND AND R1 R2 R3 R1 = R2 & R3
XORI XORI R1 R2 IMM R1 = R2 ⊕ IMM
JMP JMP ADDRESS PC = PC[31:28]
LSL LSL R1 R2 SHAMT R1 = R2 << SHAMT
LSR LSR R1 R2 SHAMT R1 = R2 >>> SHAMT
MOVR MOVR R1 R2 IMM R1 = MEM[R2 + IMM]
MOVM MOVM R1 R2 IMM MEM[R2 + IMM] = R1

Datapath

Stages: 5

  • Instruction Fetch (IF)
  • Instruction Decode (ID)
  • Execute (EX)
  • Memory (MEM)
  • Write Back (WB)

Pipeline: maximum 4 instructions running in parallel (IF) and (MEM) cannot be done in parallel.

Project Structure

project structure
 .
├── Dockerfile
├── Makefile
├── pom.xml
├── README.md
├── run.sh
├── src
│  ├── main
│  │  ├── java
│  │  │  └── fillet
│  │  │     ├── App.java
│  │  │     ├── exceptions
│  │  │     │  ├── AddressOutOfRangeException.java
│  │  │     │  ├── InvalidInstructionException.java
│  │  │     │  ├── InvalidRegisterException.java
│  │  │     │  └── InvalidRegisterNumberException.java
│  │  │     ├── instructions
│  │  │     │  ├── HaltInstruction.java
│  │  │     │  ├── ImmediateInstruction.java
│  │  │     │  ├── Instruction.java
│  │  │     │  ├── InstructionFactory.java
│  │  │     │  ├── InstructionType.java
│  │  │     │  ├── JumpInstruction.java
│  │  │     │  └── RegisterInstruction.java
│  │  │     ├── logger
│  │  │     │  ├── destinations
│  │  │     │  │  ├── ConsoleLogger.java
│  │  │     │  │  ├── FileLogger.java
│  │  │     │  │  └── LogObserver.java
│  │  │     │  ├── Logger.java
│  │  │     │  ├── LogSubject.java
│  │  │     │  ├── outputs
│  │  │     │  │  ├── run-02-06-2022-15-04-37.log
│  │  │     │  │  ├── run-02-06-2022-23-11-07.log
│  │  │     │  │  ├── run-02-06-2022-23-11-36.log
│  │  │     │  │  ├── run-02-06-2022-23-53-15.log
│  │  │     │  │  └── run-04-06-2022-11-47-52.log
│  │  │     │  └── services
│  │  │     │     ├── ColorStringService.java
│  │  │     │     ├── CreateLogFileService.java
│  │  │     │     ├── GenerateTableService.java
│  │  │     │     ├── InitLoggerService.java
│  │  │     │     ├── LogEntityService.java
│  │  │     │     └── SegmentType.java
│  │  │     ├── memory
│  │  │     │  ├── MainMemory.java
│  │  │     │  └── RegisterFile.java
│  │  │     ├── operations
│  │  │     │  ├── haltoperations
│  │  │     │  │  ├── Halt.java
│  │  │     │  │  ├── HaltOperation.java
│  │  │     │  │  └── HaltOperationFactory.java
│  │  │     │  ├── immediateoperations
│  │  │     │  │  ├── ImmediateOperation.java
│  │  │     │  │  ├── ImmediateOperationFactory.java
│  │  │     │  │  ├── JumpIfEqual.java
│  │  │     │  │  ├── MoveImmediate.java
│  │  │     │  │  ├── MoveToMemory.java
│  │  │     │  │  ├── MoveToRegister.java
│  │  │     │  │  └── XORImmediate.java
│  │  │     │  ├── jumpoperations
│  │  │     │  │  ├── Jump.java
│  │  │     │  │  ├── JumpOperation.java
│  │  │     │  │  └── JumpOperationFactory.java
│  │  │     │  ├── Operation.java
│  │  │     │  ├── OperationFactory.java
│  │  │     │  ├── OperationType.java
│  │  │     │  └── registeroperations
│  │  │     │     ├── Add.java
│  │  │     │     ├── And.java
│  │  │     │     ├── LogicalShiftLeft.java
│  │  │     │     ├── LogicalShiftRight.java
│  │  │     │     ├── Multiply.java
│  │  │     │     ├── RegisterOperation.java
│  │  │     │     ├── RegisterOperationFactory.java
│  │  │     │     └── Sub.java
│  │  │     ├── programs
│  │  │     │  ├── caProgram.txt
│  │  │     │  ├── empty-file.txt
│  │  │     │  ├── final-isA.txt
│  │  │     │  ├── negative-jump.txt
│  │  │     │  ├── program1.txt
│  │  │     │  ├── spicy-iprogram.txt
│  │  │     │  ├── spicy-jprogram.txt
│  │  │     │  ├── spicy-rprogram.txt
│  │  │     │  └── test-sum.txt
│  │  │     ├── signals
│  │  │     │  └── Signals.java
│  │  │     └── utils
│  │  │        ├── Binary.java
│  │  │        ├── Decoder.java
│  │  │        ├── Parser.java
│  │  │        ├── Path.java
│  │  │        └── Program.java
│  │  └── resources
│  └── test
│     └── java
│        └── tests
│           ├── DecoderTest.java
│           ├── ImmediateInstructionTest.java
│           ├── InstructionFactoryTest.java
│           ├── JumpInstructionTest.java
│           ├── MainMemoryTest.java
│           ├── ParserTest.java
│           ├── RegisterFileTest.java
│           └── RegisterInstructionTest.java
└── target

Features

  • Parser handles labels. 💥
  • Parser handles comments. ######
  • A logger, not only outputs to the console but also outputs a log file named after the current time stamp.
  • The code is thoroughly tested by JUnit 5.
  • Used CI in the whole process. example workflow
  • We used a containerized environment using Docker 🐳.
  • We used Maven as a build system and dependency manager. Maven Central
  • We applied some spectacular design patterns such as: 
    • Singleton 
    • Observer
    • Command
    • Factory
    • Decorator

Technologies

Technology Description
Java A hated programming langauge 👎
Maven A build tool and dependancy manager
Junit 5 Java testing framework
Docker 🐳 Container

How to test?

> make test

> mvn test

Test Using Docker

Docker will guarantee more consistency and make sure you are in a isolated enviroment and not affected by your local machine

> docker build -t fillet . 
> docker run fillet                                                                                                                                       

or even

> make docker-test

How to run the project

> mvn compile exec:java -Dexec.mainClass=fillet.App

Example log

Example
	
+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    1     |  instruction 1   |  -------------   |  -------------   |  -------------   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    2     |  -------------   |  instruction 1   |  -------------   |  -------------   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    3     |  instruction 2   |  instruction 1   |  -------------   |  -------------   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    4     |  -------------   |  instruction 2   |  instruction 1   |  -------------   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    5     |  instruction 3   |  instruction 2   |  instruction 1   |  -------------   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    6     |  -------------   |  instruction 3   |  instruction 2   |  instruction 1   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    7     |  instruction 4   |  instruction 3   |  instruction 2   |  -------------   |  instruction 1   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    8     |  -------------   |  instruction 4   |  instruction 3   |  instruction 2   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    9     |  instruction 5   |  instruction 4   |  instruction 3   |  -------------   |  instruction 2   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 1 set to -131072



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    10    |  -------------   |  instruction 5   |  instruction 4   |  instruction 3   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    11    |  instruction 6   |  instruction 5   |  instruction 4   |  -------------   |  instruction 3   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 2 set to 131071



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    12    |  -------------   |  instruction 6   |  instruction 5   |  instruction 4   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    13    |  instruction 7   |  instruction 6   |  instruction 5   |  -------------   |  instruction 4   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 3 set to 3



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    14    |  -------------   |  instruction 7   |  instruction 6   |  instruction 5   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    15    |  instruction 8   |  instruction 7   |  instruction 6   |  -------------   |  instruction 5   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 4 set to 4



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    16    |  -------------   |  instruction 8   |  instruction 7   |  instruction 6   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    17    |  instruction 9   |  instruction 8   |  instruction 7   |  -------------   |  instruction 6   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 5 set to 5



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    18    |  -------------   |  instruction 9   |  instruction 8   |  instruction 7   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    19    |  instruction 10  |  instruction 9   |  instruction 8   |  -------------   |  instruction 7   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 6 set to -6



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    20    |  -------------   |  instruction 10  |  instruction 9   |  instruction 8   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    21    |  instruction 11  |  instruction 10  |  instruction 9   |  -------------   |  instruction 8   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 7 set to -7



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    22    |  -------------   |  instruction 11  |  instruction 10  |  instruction 9   |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    23    |  instruction 12  |  instruction 11  |  instruction 10  |  -------------   |  instruction 9   |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 31 set to 31



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    24    |  -------------   |  instruction 12  |  instruction 11  |  instruction 10  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    25    |  instruction 13  |  instruction 12  |  instruction 11  |  -------------   |  instruction 10  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    26    |  -------------   |  instruction 13  |  instruction 12  |  instruction 11  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    27    |  instruction 14  |  instruction 13  |  instruction 12  |  -------------   |  instruction 11  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    28    |  -------------   |  instruction 14  |  instruction 13  |  instruction 12  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    29    |  instruction 15  |  instruction 14  |  instruction 13  |  -------------   |  instruction 12  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    30    |  -------------   |  instruction 15  |  instruction 14  |  instruction 13  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    31    |  instruction 16  |  instruction 15  |  instruction 14  |  -------------   |  instruction 13  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    32    |  -------------   |  instruction 16  |  instruction 15  |  instruction 14  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    33    |  instruction 17  |  instruction 16  |  instruction 15  |  -------------   |  instruction 14  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 8 set to -1



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    34    |  -------------   |  instruction 17  |  instruction 16  |  instruction 15  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    35    |  instruction 18  |  instruction 17  |  instruction 16  |  -------------   |  instruction 15  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 9 set to 131068



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    36    |  -------------   |  instruction 18  |  instruction 17  |  instruction 16  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    37    |  instruction 19  |  instruction 18  |  instruction 17  |  -------------   |  instruction 16  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 10 set to 12



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    38    |  -------------   |  instruction 19  |  instruction 18  |  instruction 17  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    39    |  instruction 20  |  instruction 19  |  instruction 18  |  -------------   |  instruction 17  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 11 set to 4



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    40    |  -------------   |  instruction 20  |  instruction 19  |  instruction 18  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    41    |  instruction 21  |  instruction 20  |  instruction 19  |  -------------   |  instruction 18  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 12 set to 1



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    42    |  -------------   |  instruction 21  |  instruction 20  |  instruction 19  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    43    |  instruction 22  |  instruction 21  |  instruction 20  |  -------------   |  instruction 19  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 13 set to -24



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    44    |  -------------   |  instruction 22  |  instruction 21  |  instruction 20  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    45    |  instruction 23  |  instruction 22  |  instruction 21  |  -------------   |  instruction 20  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 14 set to 536870911



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    46    |  -------------   |  instruction 23  |  instruction 22  |  instruction 21  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+

Data stored at address 1024 updated to 31



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    47    |  instruction 24  |  instruction 23  |  instruction 22  |  -------------   |  instruction 21  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    48    |  -------------   |  instruction 24  |  instruction 23  |  instruction 22  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+

Data stored at address 1025 updated to 3



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    49    |  instruction 25  |  instruction 24  |  instruction 23  |  -------------   |  instruction 22  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    50    |  -------------   |  instruction 25  |  instruction 24  |  instruction 23  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+

Data stored at address 1026 updated to 4



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    51    |  instruction 26  |  instruction 25  |  instruction 24  |  -------------   |  instruction 23  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    52    |  -------------   |  instruction 26  |  instruction 25  |  instruction 24  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+

Data stored at address 1027 updated to 5



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    53    |  instruction 27  |  instruction 26  |  instruction 25  |  -------------   |  instruction 24  |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    54    |  -------------   |  instruction 27  |  instruction 26  |  instruction 25  |  -------------   |
+----------+------------------+------------------+------------------+------------------+------------------+



+----------+------------------+------------------+------------------+------------------+------------------+
|  Cycle   |      Fetch       |      Decode      |     Execute      |      Memory      |    WriteBack     |
+----------+------------------+------------------+------------------+------------------+------------------+
|    55    |  instruction 28  |  instruction 27  |  instruction 26  |  -------------   |  instruction 25  |
+----------+------------------+------------------+------------------+------------------+------------------+

Register 15 set to 31



+------------+----------------+------------------------------------+
|  Address   |   ValueAsInt   |           ValueAsBinary            |
+------------+----------------+------------------------------------+
|     0      |   805306373    |  00110000000000000000000000000101  |
|     1      |   813826048    |  00110000100000100000000000000000  |
|     2      |   822214655    |  00110001000000011111111111111111  |
|     3      |   830472195    |  00110001100000000000000000000011  |
|     4      |   838860804    |  00110010000000000000000000000100  |
|     5      |   847249413    |  00110010100000000000000000000101  |
|     6      |   855900154    |  00110011000000111111111111111010  |
|     7      |   864288761    |  00110011100000111111111111111001  |
|     8      |   1065353247   |  00111111100000000000000000011111  |
|     9      |   805306373    |  00110000000000000000000000000101  |
|     10     |   805306373    |  00110000000000000000000000000101  |
|     11     |   805306373    |  00110000000000000000000000000101  |
|     12     |   805306373    |  00110000000000000000000000000101  |
|     13     |    67387392    |  00000100000001000100000000000000  |
|     14     |   344481792    |  00010100100010000110000000000000  |
|     15     |   621576192    |  00100101000011001000000000000000  |
|     16     |   1435533312   |  01010101100100001000000000000000  |
|     17     |   1712586756   |  01100110000101000000000000000100  |
|     18     |  -2036858878   |  10000110100110000000000000000010  |
|     19     |  -1759772669   |  10010111000111000000000000000011  |
|     20     |  -1082129408   |  10111111100000000000010000000000  |
|     21     |  -1317010431   |  10110001100000000000010000000001  |
|     22     |  -1308621822   |  10110010000000000000010000000010  |
|     23     |  -1300233213   |  10110010100000000000010000000011  |
|     24     |  -1484782592   |  10100111100000000000010000000000  |
|     25     |       -1       |  11111111111111111111111111111111  |
|     26     |       0        |  00000000000000000000000000000000  |
|     27     |       0        |  00000000000000000000000000000000  |
|     28     |       0        |  00000000000000000000000000000000  |
|     29     |       0        |  00000000000000000000000000000000  |
|     30     |       0        |  00000000000000000000000000000000  |
|     31     |       0        |  00000000000000000000000000000000  |
|     32     |       0        |  00000000000000000000000000000000  |
|     33     |       0        |  00000000000000000000000000000000  |
|     34     |       0        |  00000000000000000000000000000000  |
|     35     |       0        |  00000000000000000000000000000000  |
|     36     |       0        |  00000000000000000000000000000000  |
|     37     |       0        |  00000000000000000000000000000000  |
|     38     |       0        |  00000000000000000000000000000000  |
|     39     |       0        |  00000000000000000000000000000000  |
|     40     |       0        |  00000000000000000000000000000000  |
|     41     |       0        |  00000000000000000000000000000000  |
|     42     |       0        |  00000000000000000000000000000000  |
|     43     |       0        |  00000000000000000000000000000000  |
|     44     |       0        |  00000000000000000000000000000000  |
|     45     |       0        |  00000000000000000000000000000000  |
|     46     |       0        |  00000000000000000000000000000000  |
|     47     |       0        |  00000000000000000000000000000000  |
|     48     |       0        |  00000000000000000000000000000000  |
|     49     |       0        |  00000000000000000000000000000000  |
|     50     |       0        |  00000000000000000000000000000000  |
|     51     |       0        |  00000000000000000000000000000000  |
|     52     |       0        |  00000000000000000000000000000000  |
|     53     |       0        |  00000000000000000000000000000000  |
|     54     |       0        |  00000000000000000000000000000000  |
|     55     |       0        |  00000000000000000000000000000000  |
|     56     |       0        |  00000000000000000000000000000000  |
|     57     |       0        |  00000000000000000000000000000000  |
|     58     |       0        |  00000000000000000000000000000000  |
|     59     |       0        |  00000000000000000000000000000000  |
|     60     |       0        |  00000000000000000000000000000000  |
|     61     |       0        |  00000000000000000000000000000000  |
|     62     |       0        |  00000000000000000000000000000000  |
|     63     |       0        |  00000000000000000000000000000000  |
|     64     |       0        |  00000000000000000000000000000000  |
|     65     |       0        |  00000000000000000000000000000000  |
|     66     |       0        |  00000000000000000000000000000000  |
|     67     |       0        |  00000000000000000000000000000000  |
|     68     |       0        |  00000000000000000000000000000000  |
|     69     |       0        |  00000000000000000000000000000000  |
|     70     |       0        |  00000000000000000000000000000000  |
|     71     |       0        |  00000000000000000000000000000000  |
|     72     |       0        |  00000000000000000000000000000000  |
|     73     |       0        |  00000000000000000000000000000000  |
|     74     |       0        |  00000000000000000000000000000000  |
|     75     |       0        |  00000000000000000000000000000000  |
|     76     |       0        |  00000000000000000000000000000000  |
|     77     |       0        |  00000000000000000000000000000000  |
|     78     |       0        |  00000000000000000000000000000000  |
|     79     |       0        |  00000000000000000000000000000000  |
|     80     |       0        |  00000000000000000000000000000000  |
|     81     |       0        |  00000000000000000000000000000000  |
|     82     |       0        |  00000000000000000000000000000000  |
|     83     |       0        |  00000000000000000000000000000000  |
|     84     |       0        |  00000000000000000000000000000000  |
|     85     |       0        |  00000000000000000000000000000000  |
|     86     |       0        |  00000000000000000000000000000000  |
|     87     |       0        |  00000000000000000000000000000000  |
|     88     |       0        |  00000000000000000000000000000000  |
|     89     |       0        |  00000000000000000000000000000000  |
|     90     |       0        |  00000000000000000000000000000000  |
|     91     |       0        |  00000000000000000000000000000000  |
|     92     |       0        |  00000000000000000000000000000000  |
|     93     |       0        |  00000000000000000000000000000000  |
|     94     |       0        |  00000000000000000000000000000000  |
|     95     |       0        |  00000000000000000000000000000000  |
|     96     |       0        |  00000000000000000000000000000000  |
|     97     |       0        |  00000000000000000000000000000000  |
|     98     |       0        |  00000000000000000000000000000000  |
|     99     |       0        |  00000000000000000000000000000000  |
|    100     |       0        |  00000000000000000000000000000000  |
|    101     |       0        |  00000000000000000000000000000000  |
|    102     |       0        |  00000000000000000000000000000000  |
|    103     |       0        |  00000000000000000000000000000000  |
|    104     |       0        |  00000000000000000000000000000000  |
|    105     |       0        |  00000000000000000000000000000000  |
|    106     |       0        |  00000000000000000000000000000000  |
|    107     |       0        |  00000000000000000000000000000000  |
|    108     |       0        |  00000000000000000000000000000000  |
|    109     |       0        |  00000000000000000000000000000000  |
|    110     |       0        |  00000000000000000000000000000000  |
|    111     |       0        |  00000000000000000000000000000000  |
|    112     |       0        |  00000000000000000000000000000000  |
|    113     |       0        |  00000000000000000000000000000000  |
|    114     |       0        |  00000000000000000000000000000000  |
|    115     |       0        |  00000000000000000000000000000000  |
|    116     |       0        |  00000000000000000000000000000000  |
|    117     |       0        |  00000000000000000000000000000000  |
|    118     |       0        |  00000000000000000000000000000000  |
|    119     |       0        |  00000000000000000000000000000000  |
|    120     |       0        |  00000000000000000000000000000000  |
|    121     |       0        |  00000000000000000000000000000000  |
|    122     |       0        |  00000000000000000000000000000000  |
|    123     |       0        |  00000000000000000000000000000000  |
|    124     |       0        |  00000000000000000000000000000000  |
|    125     |       0        |  00000000000000000000000000000000  |
|    126     |       0        |  00000000000000000000000000000000  |
|    127     |       0        |  00000000000000000000000000000000  |
|    128     |       0        |  00000000000000000000000000000000  |
|    129     |       0        |  00000000000000000000000000000000  |
|    130     |       0        |  00000000000000000000000000000000  |
|    131     |       0        |  00000000000000000000000000000000  |
|    132     |       0        |  00000000000000000000000000000000  |
|    133     |       0        |  00000000000000000000000000000000  |
|    134     |       0        |  00000000000000000000000000000000  |
|    135     |       0        |  00000000000000000000000000000000  |
|    136     |       0        |  00000000000000000000000000000000  |
|    137     |       0        |  00000000000000000000000000000000  |
|    138     |       0        |  00000000000000000000000000000000  |
|    139     |       0        |  00000000000000000000000000000000  |
|    140     |       0        |  00000000000000000000000000000000  |
|    141     |       0        |  00000000000000000000000000000000  |
|    142     |       0        |  00000000000000000000000000000000  |
|    143     |       0        |  00000000000000000000000000000000  |
|    144     |       0        |  00000000000000000000000000000000  |
|    145     |       0        |  00000000000000000000000000000000  |
|    146     |       0        |  00000000000000000000000000000000  |
|    147     |       0        |  00000000000000000000000000000000  |
|    148     |       0        |  00000000000000000000000000000000  |
|    149     |       0        |  00000000000000000000000000000000  |
|    150     |       0        |  00000000000000000000000000000000  |
|    151     |       0        |  00000000000000000000000000000000  |
|    152     |       0        |  00000000000000000000000000000000  |
|    153     |       0        |  00000000000000000000000000000000  |
|    154     |       0        |  00000000000000000000000000000000  |
|    155     |       0        |  00000000000000000000000000000000  |
|    156     |       0        |  00000000000000000000000000000000  |
|    157     |       0        |  00000000000000000000000000000000  |
|    158     |       0        |  00000000000000000000000000000000  |
|    159     |       0        |  00000000000000000000000000000000  |
|    160     |       0        |  00000000000000000000000000000000  |
|    161     |       0        |  00000000000000000000000000000000  |
|    162     |       0        |  00000000000000000000000000000000  |
|    163     |       0        |  00000000000000000000000000000000  |
|    164     |       0        |  00000000000000000000000000000000  |
|    165     |       0        |  00000000000000000000000000000000  |
|    166     |       0        |  00000000000000000000000000000000  |
|    167     |       0        |  00000000000000000000000000000000  |
|    168     |       0        |  00000000000000000000000000000000  |
|    169     |       0        |  00000000000000000000000000000000  |
|    170     |       0        |  00000000000000000000000000000000  |
|    171     |       0        |  00000000000000000000000000000000  |
|    172     |       0        |  00000000000000000000000000000000  |
|    173     |       0        |  00000000000000000000000000000000  |
|    174     |       0        |  00000000000000000000000000000000  |
|    175     |       0        |  00000000000000000000000000000000  |
|    176     |       0        |  00000000000000000000000000000000  |
|    177     |       0        |  00000000000000000000000000000000  |
|    178     |       0        |  00000000000000000000000000000000  |
|    179     |       0        |  00000000000000000000000000000000  |
|    180     |       0        |  00000000000000000000000000000000  |
|    181     |       0        |  00000000000000000000000000000000  |
|    182     |       0        |  00000000000000000000000000000000  |
|    183     |       0        |  00000000000000000000000000000000  |
|    184     |       0        |  00000000000000000000000000000000  |
|    185     |       0        |  00000000000000000000000000000000  |
|    186     |       0        |  00000000000000000000000000000000  |
|    187     |       0        |  00000000000000000000000000000000  |
|    188     |       0        |  00000000000000000000000000000000  |
|    189     |       0        |  00000000000000000000000000000000  |
|    190     |       0        |  00000000000000000000000000000000  |
|    191     |       0        |  00000000000000000000000000000000  |
|    192     |       0        |  00000000000000000000000000000000  |
|    193     |       0        |  00000000000000000000000000000000  |
|    194     |       0        |  00000000000000000000000000000000  |
|    195     |       0        |  00000000000000000000000000000000  |
|    196     |       0        |  00000000000000000000000000000000  |
|    197     |       0        |  00000000000000000000000000000000  |
|    198     |       0        |  00000000000000000000000000000000  |
|    199     |       0        |  00000000000000000000000000000000  |
|    200     |       0        |  00000000000000000000000000000000  |
|    201     |       0        |  00000000000000000000000000000000  |
|    202     |       0        |  00000000000000000000000000000000  |
|    203     |       0        |  00000000000000000000000000000000  |
|    204     |       0        |  00000000000000000000000000000000  |
|    205     |       0        |  00000000000000000000000000000000  |
|    206     |       0        |  00000000000000000000000000000000  |
|    207     |       0        |  00000000000000000000000000000000  |
|    208     |       0        |  00000000000000000000000000000000  |
|    209     |       0        |  00000000000000000000000000000000  |
|    210     |       0        |  00000000000000000000000000000000  |
|    211     |       0        |  00000000000000000000000000000000  |
|    212     |       0        |  00000000000000000000000000000000  |
|    213     |       0        |  00000000000000000000000000000000  |
|    214     |       0        |  00000000000000000000000000000000  |
|    215     |       0        |  00000000000000000000000000000000  |
|    216     |       0        |  00000000000000000000000000000000  |
|    217     |       0        |  00000000000000000000000000000000  |
|    218     |       0        |  00000000000000000000000000000000  |
|    219     |       0        |  00000000000000000000000000000000  |
|    220     |       0        |  00000000000000000000000000000000  |
|    221     |       0        |  00000000000000000000000000000000  |
|    222     |       0        |  00000000000000000000000000000000  |
|    223     |       0        |  00000000000000000000000000000000  |
|    224     |       0        |  00000000000000000000000000000000  |
|    225     |       0        |  00000000000000000000000000000000  |
|    226     |       0        |  00000000000000000000000000000000  |
|    227     |       0        |  00000000000000000000000000000000  |
|    228     |       0        |  00000000000000000000000000000000  |
|    229     |       0        |  00000000000000000000000000000000  |
|    230     |       0        |  00000000000000000000000000000000  |
|    231     |       0        |  00000000000000000000000000000000  |
|    232     |       0        |  00000000000000000000000000000000  |
|    233     |       0        |  00000000000000000000000000000000  |
|    234     |       0        |  00000000000000000000000000000000  |
|    235     |       0        |  00000000000000000000000000000000  |
|    236     |       0        |  00000000000000000000000000000000  |
|    237     |       0        |  00000000000000000000000000000000  |
|    238     |       0        |  00000000000000000000000000000000  |
|    239     |       0        |  00000000000000000000000000000000  |
|    240     |       0        |  00000000000000000000000000000000  |
|    241     |       0        |  00000000000000000000000000000000  |
|    242     |       0        |  00000000000000000000000000000000  |
|    243     |       0        |  00000000000000000000000000000000  |
|    244     |       0        |  00000000000000000000000000000000  |
|    245     |       0        |  00000000000000000000000000000000  |
|    246     |       0        |  00000000000000000000000000000000  |
|    247     |       0        |  00000000000000000000000000000000  |
|    248     |       0        |  00000000000000000000000000000000  |
|    249     |       0        |  00000000000000000000000000000000  |
|    250     |       0        |  00000000000000000000000000000000  |
|    251     |       0        |  00000000000000000000000000000000  |
|    252     |       0        |  00000000000000000000000000000000  |
|    253     |       0        |  00000000000000000000000000000000  |
|    254     |       0        |  00000000000000000000000000000000  |
|    255     |       0        |  00000000000000000000000000000000  |
|    256     |       0        |  00000000000000000000000000000000  |
|    257     |       0        |  00000000000000000000000000000000  |
|    258     |       0        |  00000000000000000000000000000000  |
|    259     |       0        |  00000000000000000000000000000000  |
|    260     |       0        |  00000000000000000000000000000000  |
|    261     |       0        |  00000000000000000000000000000000  |
|    262     |       0        |  00000000000000000000000000000000  |
|    263     |       0        |  00000000000000000000000000000000  |
|    264     |       0        |  00000000000000000000000000000000  |
|    265     |       0        |  00000000000000000000000000000000  |
|    266     |       0        |  00000000000000000000000000000000  |
|    267     |       0        |  00000000000000000000000000000000  |
|    268     |       0        |  00000000000000000000000000000000  |
|    269     |       0        |  00000000000000000000000000000000  |
|    270     |       0        |  00000000000000000000000000000000  |
|    271     |       0        |  00000000000000000000000000000000  |
|    272     |       0        |  00000000000000000000000000000000  |
|    273     |       0        |  00000000000000000000000000000000  |
|    274     |       0        |  00000000000000000000000000000000  |
|    275     |       0        |  00000000000000000000000000000000  |
|    276     |       0        |  00000000000000000000000000000000  |
|    277     |       0        |  00000000000000000000000000000000  |
|    278     |       0        |  00000000000000000000000000000000  |
|    279     |       0        |  00000000000000000000000000000000  |
|    280     |       0        |  00000000000000000000000000000000  |
|    281     |       0        |  00000000000000000000000000000000  |
|    282     |       0        |  00000000000000000000000000000000  |
|    283     |       0        |  00000000000000000000000000000000  |
|    284     |       0        |  00000000000000000000000000000000  |
|    285     |       0        |  00000000000000000000000000000000  |
|    286     |       0        |  00000000000000000000000000000000  |
|    287     |       0        |  00000000000000000000000000000000  |
|    288     |       0        |  00000000000000000000000000000000  |
|    289     |       0        |  00000000000000000000000000000000  |
|    290     |       0        |  00000000000000000000000000000000  |
|    291     |       0        |  00000000000000000000000000000000  |
|    292     |       0        |  00000000000000000000000000000000  |
|    293     |       0        |  00000000000000000000000000000000  |
|    294     |       0        |  00000000000000000000000000000000  |
|    295     |       0        |  00000000000000000000000000000000  |
|    296     |       0        |  00000000000000000000000000000000  |
|    297     |       0        |  00000000000000000000000000000000  |
|    298     |       0        |  00000000000000000000000000000000  |
|    299     |       0        |  00000000000000000000000000000000  |
|    300     |       0        |  00000000000000000000000000000000  |
|    301     |       0        |  00000000000000000000000000000000  |
|    302     |       0        |  00000000000000000000000000000000  |
|    303     |       0        |  00000000000000000000000000000000  |
|    304     |       0        |  00000000000000000000000000000000  |
|    305     |       0        |  00000000000000000000000000000000  |
|    306     |       0        |  00000000000000000000000000000000  |
|    307     |       0        |  00000000000000000000000000000000  |
|    308     |       0        |  00000000000000000000000000000000  |
|    309     |       0        |  00000000000000000000000000000000  |
|    310     |       0        |  00000000000000000000000000000000  |
|    311     |       0        |  00000000000000000000000000000000  |
|    312     |       0        |  00000000000000000000000000000000  |
|    313     |       0        |  00000000000000000000000000000000  |
|    314     |       0        |  00000000000000000000000000000000  |
|    315     |       0        |  00000000000000000000000000000000  |
|    316     |       0        |  00000000000000000000000000000000  |
|    317     |       0        |  00000000000000000000000000000000  |
|    318     |       0        |  00000000000000000000000000000000  |
|    319     |       0        |  00000000000000000000000000000000  |
|    320     |       0        |  00000000000000000000000000000000  |
|    321     |       0        |  00000000000000000000000000000000  |
|    322     |       0        |  00000000000000000000000000000000  |
|    323     |       0        |  00000000000000000000000000000000  |
|    324     |       0        |  00000000000000000000000000000000  |
|    325     |       0        |  00000000000000000000000000000000  |
|    326     |       0        |  00000000000000000000000000000000  |
|    327     |       0        |  00000000000000000000000000000000  |
|    328     |       0        |  00000000000000000000000000000000  |
|    329     |       0        |  00000000000000000000000000000000  |
|    330     |       0        |  00000000000000000000000000000000  |
|    331     |       0        |  00000000000000000000000000000000  |
|    332     |       0        |  00000000000000000000000000000000  |
|    333     |       0        |  00000000000000000000000000000000  |
|    334     |       0        |  00000000000000000000000000000000  |
|    335     |       0        |  00000000000000000000000000000000  |
|    336     |       0        |  00000000000000000000000000000000  |
|    337     |       0        |  00000000000000000000000000000000  |
|    338     |       0        |  00000000000000000000000000000000  |
|    339     |       0        |  00000000000000000000000000000000  |
|    340     |       0        |  00000000000000000000000000000000  |
|    341     |       0        |  00000000000000000000000000000000  |
|    342     |       0        |  00000000000000000000000000000000  |
|    343     |       0        |  00000000000000000000000000000000  |
|    344     |       0        |  00000000000000000000000000000000  |
|    345     |       0        |  00000000000000000000000000000000  |
|    346     |       0        |  00000000000000000000000000000000  |
|    347     |       0        |  00000000000000000000000000000000  |
|    348     |       0        |  00000000000000000000000000000000  |
|    349     |       0        |  00000000000000000000000000000000  |
|    350     |       0        |  00000000000000000000000000000000  |
|    351     |       0        |  00000000000000000000000000000000  |
|    352     |       0        |  00000000000000000000000000000000  |
|    353     |       0        |  00000000000000000000000000000000  |
|    354     |       0        |  00000000000000000000000000000000  |
|    355     |       0        |  00000000000000000000000000000000  |
|    356     |       0        |  00000000000000000000000000000000  |
|    357     |       0        |  00000000000000000000000000000000  |
|    358     |       0        |  00000000000000000000000000000000  |
|    359     |       0        |  00000000000000000000000000000000  |
|    360     |       0        |  00000000000000000000000000000000  |
|    361     |       0        |  00000000000000000000000000000000  |
|    362     |       0        |  00000000000000000000000000000000  |
|    363     |       0        |  00000000000000000000000000000000  |
|    364     |       0        |  00000000000000000000000000000000  |
|    365     |       0        |  00000000000000000000000000000000  |
|    366     |       0        |  00000000000000000000000000000000  |
|    367     |       0        |  00000000000000000000000000000000  |
|    368     |       0        |  00000000000000000000000000000000  |
|    369     |       0        |  00000000000000000000000000000000  |
|    370     |       0        |  00000000000000000000000000000000  |
|    371     |       0        |  00000000000000000000000000000000  |
|    372     |       0        |  00000000000000000000000000000000  |
|    373     |       0        |  00000000000000000000000000000000  |
|    374     |       0        |  00000000000000000000000000000000  |
|    375     |       0        |  00000000000000000000000000000000  |
|    376     |       0        |  00000000000000000000000000000000  |
|    377     |       0        |  00000000000000000000000000000000  |
|    378     |       0        |  00000000000000000000000000000000  |
|    379     |       0        |  00000000000000000000000000000000  |
|    380     |       0        |  00000000000000000000000000000000  |
|    381     |       0        |  00000000000000000000000000000000  |
|    382     |       0        |  00000000000000000000000000000000  |
|    383     |       0        |  00000000000000000000000000000000  |
|    384     |       0        |  00000000000000000000000000000000  |
|    385     |       0        |  00000000000000000000000000000000  |
|    386     |       0        |  00000000000000000000000000000000  |
|    387     |       0        |  00000000000000000000000000000000  |
|    388     |       0        |  00000000000000000000000000000000  |
|    389     |       0        |  00000000000000000000000000000000  |
|    390     |       0        |  00000000000000000000000000000000  |
|    391     |       0        |  00000000000000000000000000000000  |
|    392     |       0        |  00000000000000000000000000000000  |
|    393     |       0        |  00000000000000000000000000000000  |
|    394     |       0        |  00000000000000000000000000000000  |
|    395     |       0        |  00000000000000000000000000000000  |
|    396     |       0        |  00000000000000000000000000000000  |
|    397     |       0        |  00000000000000000000000000000000  |
|    398     |       0        |  00000000000000000000000000000000  |
|    399     |       0        |  00000000000000000000000000000000  |
|    400     |       0        |  00000000000000000000000000000000  |
|    401     |       0        |  00000000000000000000000000000000  |
|    402     |       0        |  00000000000000000000000000000000  |
|    403     |       0        |  00000000000000000000000000000000  |
|    404     |       0        |  00000000000000000000000000000000  |
|    405     |       0        |  00000000000000000000000000000000  |
|    406     |       0        |  00000000000000000000000000000000  |
|    407     |       0        |  00000000000000000000000000000000  |
|    408     |       0        |  00000000000000000000000000000000  |
|    409     |       0        |  00000000000000000000000000000000  |
|    410     |       0        |  00000000000000000000000000000000  |
|    411     |       0        |  00000000000000000000000000000000  |
|    412     |       0        |  00000000000000000000000000000000  |
|    413     |       0        |  00000000000000000000000000000000  |
|    414     |       0        |  00000000000000000000000000000000  |
|    415     |       0        |  00000000000000000000000000000000  |
|    416     |       0        |  00000000000000000000000000000000  |
|    417     |       0        |  00000000000000000000000000000000  |
|    418     |       0        |  00000000000000000000000000000000  |
|    419     |       0        |  00000000000000000000000000000000  |
|    420     |       0        |  00000000000000000000000000000000  |
|    421     |       0        |  00000000000000000000000000000000  |
|    422     |       0        |  00000000000000000000000000000000  |
|    423     |       0        |  00000000000000000000000000000000  |
|    424     |       0        |  00000000000000000000000000000000  |
|    425     |       0        |  00000000000000000000000000000000  |
|    426     |       0        |  00000000000000000000000000000000  |
|    427     |       0        |  00000000000000000000000000000000  |
|    428     |       0        |  00000000000000000000000000000000  |
|    429     |       0        |  00000000000000000000000000000000  |
|    430     |       0        |  00000000000000000000000000000000  |
|    431     |       0        |  00000000000000000000000000000000  |
|    432     |       0        |  00000000000000000000000000000000  |
|    433     |       0        |  00000000000000000000000000000000  |
|    434     |       0        |  00000000000000000000000000000000  |
|    435     |       0        |  00000000000000000000000000000000  |
|    436     |       0        |  00000000000000000000000000000000  |
|    437     |       0        |  00000000000000000000000000000000  |
|    438     |       0        |  00000000000000000000000000000000  |
|    439     |       0        |  00000000000000000000000000000000  |
|    440     |       0        |  00000000000000000000000000000000  |
|    441     |       0        |  00000000000000000000000000000000  |
|    442     |       0        |  00000000000000000000000000000000  |
|    443     |       0        |  00000000000000000000000000000000  |
|    444     |       0        |  00000000000000000000000000000000  |
|    445     |       0        |  00000000000000000000000000000000  |
|    446     |       0        |  00000000000000000000000000000000  |
|    447     |       0        |  00000000000000000000000000000000  |
|    448     |       0        |  00000000000000000000000000000000  |
|    449     |       0        |  00000000000000000000000000000000  |
|    450     |       0        |  00000000000000000000000000000000  |
|    451     |       0        |  00000000000000000000000000000000  |
|    452     |       0        |  00000000000000000000000000000000  |
|    453     |       0        |  00000000000000000000000000000000  |
|    454     |       0        |  00000000000000000000000000000000  |
|    455     |       0        |  00000000000000000000000000000000  |
|    456     |       0        |  00000000000000000000000000000000  |
|    457     |       0        |  00000000000000000000000000000000  |
|    458     |       0        |  00000000000000000000000000000000  |
|    459     |       0        |  00000000000000000000000000000000  |
|    460     |       0        |  00000000000000000000000000000000  |
|    461     |       0        |  00000000000000000000000000000000  |
|    462     |       0        |  00000000000000000000000000000000  |
|    463     |       0        |  00000000000000000000000000000000  |
|    464     |       0        |  00000000000000000000000000000000  |
|    465     |       0        |  00000000000000000000000000000000  |
|    466     |       0        |  00000000000000000000000000000000  |
|    467     |       0        |  00000000000000000000000000000000  |
|    468     |       0        |  00000000000000000000000000000000  |
|    469     |       0        |  00000000000000000000000000000000  |
|    470     |       0        |  00000000000000000000000000000000  |
|    471     |       0        |  00000000000000000000000000000000  |
|    472     |       0        |  00000000000000000000000000000000  |
|    473     |       0        |  00000000000000000000000000000000  |
|    474     |       0        |  00000000000000000000000000000000  |
|    475     |       0        |  00000000000000000000000000000000  |
|    476     |       0        |  00000000000000000000000000000000  |
|    477     |       0        |  00000000000000000000000000000000  |
|    478     |       0        |  00000000000000000000000000000000  |
|    479     |       0        |  00000000000000000000000000000000  |
|    480     |       0        |  00000000000000000000000000000000  |
|    481     |       0        |  00000000000000000000000000000000  |
|    482     |       0        |  00000000000000000000000000000000  |
|    483     |       0        |  00000000000000000000000000000000  |
|    484     |       0        |  00000000000000000000000000000000  |
|    485     |       0        |  00000000000000000000000000000000  |
|    486     |       0        |  00000000000000000000000000000000  |
|    487     |       0        |  00000000000000000000000000000000  |
|    488     |       0        |  00000000000000000000000000000000  |
|    489     |       0        |  00000000000000000000000000000000  |
|    490     |       0        |  00000000000000000000000000000000  |
|    491     |       0        |  00000000000000000000000000000000  |
|    492     |       0        |  00000000000000000000000000000000  |
|    493     |       0        |  00000000000000000000000000000000  |
|    494     |       0        |  00000000000000000000000000000000  |
|    495     |       0        |  00000000000000000000000000000000  |
|    496     |       0        |  00000000000000000000000000000000  |
|    497     |       0        |  00000000000000000000000000000000  |
|    498     |       0        |  00000000000000000000000000000000  |
|    499     |       0        |  00000000000000000000000000000000  |
|    500     |       0        |  00000000000000000000000000000000  |
|    501     |       0        |  00000000000000000000000000000000  |
|    502     |       0        |  00000000000000000000000000000000  |
|    503     |       0        |  00000000000000000000000000000000  |
|    504     |       0        |  00000000000000000000000000000000  |
|    505     |       0        |  00000000000000000000000000000000  |
|    506     |       0        |  00000000000000000000000000000000  |
|    507     |       0        |  00000000000000000000000000000000  |
|    508     |       0        |  00000000000000000000000000000000  |
|    509     |       0        |  00000000000000000000000000000000  |
|    510     |       0        |  00000000000000000000000000000000  |
|    511     |       0        |  00000000000000000000000000000000  |
|    512     |       0        |  00000000000000000000000000000000  |
|    513     |       0        |  00000000000000000000000000000000  |
|    514     |       0        |  00000000000000000000000000000000  |
|    515     |       0        |  00000000000000000000000000000000  |
|    516     |       0        |  00000000000000000000000000000000  |
|    517     |       0        |  00000000000000000000000000000000  |
|    518     |       0        |  00000000000000000000000000000000  |
|    519     |       0        |  00000000000000000000000000000000  |
|    520     |       0        |  00000000000000000000000000000000  |
|    521     |       0        |  00000000000000000000000000000000  |
|    522     |       0        |  00000000000000000000000000000000  |
|    523     |       0        |  00000000000000000000000000000000  |
|    524     |       0        |  00000000000000000000000000000000  |
|    525     |       0        |  00000000000000000000000000000000  |
|    526     |       0        |  00000000000000000000000000000000  |
|    527     |       0        |  00000000000000000000000000000000  |
|    528     |       0        |  00000000000000000000000000000000  |
|    529     |       0        |  00000000000000000000000000000000  |
|    530     |       0        |  00000000000000000000000000000000  |
|    531     |       0        |  00000000000000000000000000000000  |
|    532     |       0        |  00000000000000000000000000000000  |
|    533     |       0        |  00000000000000000000000000000000  |
|    534     |       0        |  00000000000000000000000000000000  |
|    535     |       0        |  00000000000000000000000000000000  |
|    536     |       0        |  00000000000000000000000000000000  |
|    537     |       0        |  00000000000000000000000000000000  |
|    538     |       0        |  00000000000000000000000000000000  |
|    539     |       0        |  00000000000000000000000000000000  |
|    540     |       0        |  00000000000000000000000000000000  |
|    541     |       0        |  00000000000000000000000000000000  |
|    542     |       0        |  00000000000000000000000000000000  |
|    543     |       0        |  00000000000000000000000000000000  |
|    544     |       0        |  00000000000000000000000000000000  |
|    545     |       0        |  00000000000000000000000000000000  |
|    546     |       0        |  00000000000000000000000000000000  |
|    547     |       0        |  00000000000000000000000000000000  |
|    548     |       0        |  00000000000000000000000000000000  |
|    549     |       0        |  00000000000000000000000000000000  |
|    550     |       0        |  00000000000000000000000000000000  |
|    551     |       0        |  00000000000000000000000000000000  |
|    552     |       0        |  00000000000000000000000000000000  |
|    553     |       0        |  00000000000000000000000000000000  |
|    554     |       0        |  00000000000000000000000000000000  |
|    555     |       0        |  00000000000000000000000000000000  |
|    556     |       0        |  00000000000000000000000000000000  |
|    557     |       0        |  00000000000000000000000000000000  |
|    558     |       0        |  00000000000000000000000000000000  |
|    559     |       0        |  00000000000000000000000000000000  |
|    560     |       0        |  00000000000000000000000000000000  |
|    561     |       0        |  00000000000000000000000000000000  |
|    562     |       0        |  00000000000000000000000000000000  |
|    563     |       0        |  00000000000000000000000000000000  |
|    564     |       0        |  00000000000000000000000000000000  |
|    565     |       0        |  00000000000000000000000000000000  |
|    566     |       0        |  00000000000000000000000000000000  |
|    567     |       0        |  00000000000000000000000000000000  |
|    568     |       0        |  00000000000000000000000000000000  |
|    569     |       0        |  00000000000000000000000000000000  |
|    570     |       0        |  00000000000000000000000000000000  |
|    571     |       0        |  00000000000000000000000000000000  |
|    572     |       0        |  00000000000000000000000000000000  |
|    573     |       0        |  00000000000000000000000000000000  |
|    574     |       0        |  00000000000000000000000000000000  |
|    575     |       0        |  00000000000000000000000000000000  |
|    576     |       0        |  00000000000000000000000000000000  |
|    577     |       0        |  00000000000000000000000000000000  |
|    578     |       0        |  00000000000000000000000000000000  |
|    579     |       0        |  00000000000000000000000000000000  |
|    580     |       0        |  00000000000000000000000000000000  |
|    581     |       0        |  00000000000000000000000000000000  |
|    582     |       0        |  00000000000000000000000000000000  |
|    583     |       0        |  00000000000000000000000000000000  |
|    584     |       0        |  00000000000000000000000000000000  |
|    585     |       0        |  00000000000000000000000000000000  |
|    586     |       0        |  00000000000000000000000000000000  |
|    587     |       0        |  00000000000000000000000000000000  |
|    588     |       0        |  00000000000000000000000000000000  |
|    589     |       0        |  00000000000000000000000000000000  |
|    590     |       0        |  00000000000000000000000000000000  |
|    591     |       0        |  00000000000000000000000000000000  |
|    592     |       0        |  00000000000000000000000000000000  |
|    593     |       0        |  00000000000000000000000000000000  |
|    594     |       0        |  00000000000000000000000000000000  |
|    595     |       0        |  00000000000000000000000000000000  |

|    1022    |       0        |  00000000000000000000000000000000  |
|    1023    |       0        |  00000000000000000000000000000000  |
|    1024    |       31       |  00000000000000000000000000011111  |
|    1025    |       3        |  00000000000000000000000000000011  |
|    1026    |       4        |  00000000000000000000000000000100  |
|    1027    |       5        |  00000000000000000000000000000101  |
|    1028    |       0        |  00000000000000000000000000000000  |
|	.    |     .          |                                    |
|	.    |     .          |                                    |
|    2047    |       0        |  00000000000000000000000000000000  |
+------------+----------------+------------------------------------+
	
+------------+--------------+
|  Register  |    Value     |
+------------+--------------+
|     0      |      0       |
|     1      |   -131072    |
|     2      |    131071    |
|     3      |      3       |
|     4      |      4       |
|     5      |      5       |
|     6      |      -6      |
|     7      |      -7      |
|     8      |      -1      |
|     9      |    131068    |
|     10     |      12      |
|     11     |      4       |
|     12     |      1       |
|     13     |     -24      |
|     14     |  536870911   |
|     15     |      31      |
|     16     |      0       |
|     17     |      0       |
|     18     |      0       |
|     19     |      0       |
|     20     |      0       |
|     21     |      0       |
|     22     |      0       |
|     23     |      0       |
|     24     |      0       |
|     25     |      0       |
|     26     |      0       |
|     27     |      0       |
|     28     |      0       |
|     29     |      0       |
|     30     |      0       |
|     31     |      31      |
+------------+--------------+

Team behind this piece of art

fillet-o-neumann's People

Contributors

ahmednasserg avatar aboueleyes avatar shimaabetah avatar mohammadotaha avatar abdulaziz-hassan avatar

Stargazers

Ahmed Elwasefi avatar  avatar Abd El-Twab M. Fakhry avatar Nour Algendi avatar Mohamed Medhat avatar Yusuf Hegazy avatar  avatar Dalia Walid avatar Ahmed Ashraf avatar John Roufaeil avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fillet-o-neumann's Issues

[FR] Parser

  • Parse R type
  • Parse I type
  • Parse J type
  • handle MOVI, LSL, LSR
  • writing good tests :)
  • Handle Labels
  • Handle comments, should I?

- [ ] Better exceptions for invalid instructions  # no need :) 
- [ ] maybe an Instruction Factory?  # no need
-```

[FR] Logger

Printings

The following items must be printed in the console after each Clock Cycle:

  • The Clock Cycle number.
  • The Pipeline stages:
    • Which instruction is being executed at each stage?
    • What are the input parameters/values for each stage?
  • The updates occurring to the registers in case a register value was changed.
  • The updates occurring in the memory (data segment of main memory or data memory according
    to your package) in case a value was stored or updated in the memory.
  • The content of all registers after the last clock cycle.
  • The full content of the memory (main memory or instruction and data memories according to your
    package) after the last clock cycle.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.