- 📌 Introduction
- 🚀 Features
- ⚙️ Vole Machine Language Instruction Set
- 🖥️ Watch the Demo
- 🛠️ Getting Started
- 📌 Usage
- 🤝 Contributing
- 🌟 Acknowledgments
- 🖥️ Console Version
- ✍️ Authors
- 📜 License
The Vole Machine Language Simulator GUI is a graphical application designed to simulate the operations of a simple CPU. Built with Qt, it provides users with the ability to load instructions, view and edit memory, monitor register states, and perform operations such as fetch, decode, and execute. This tool is intended for educational purposes, aiding in the understanding of basic CPU functionality and object-oriented programming principles.
- Memory Management: Visual representation of memory cells, supporting hexadecimal, binary, and integer views.
- Register Management: Display and management of registers with detailed formats.
- Instruction Execution: Load, decode, fetch, and execute instructions with step-by-step control.
- Manual Instruction Input: Option to manually add, decode, and execute instructions without fetching from memory.
- User Interface: Intuitive Qt-based GUI with a dedicated 'How to Use' window for user guidance.
- Cross-Platform Compatibility: Runs on Windows, macOS, and Linux.
Opcode | Format | Description |
---|---|---|
1 | RXY | LOAD the register R with the bit pattern found in the memory cell whose address is XY. |
2 | RXY | LOAD the register R with the bit pattern XY. |
3 | RXY | STORE the bit pattern found in register R in the memory cell whose address is XY. |
4 | 0RS | MOVE the bit pattern found in register R to register S. |
5 | RST | ADD the bit patterns in registers S and T as though they were two’s complement representations and leave the result in register R. |
6 | RST | ADD the bit patterns in registers S and T as though they represented values in floating-point notation and leave the floating-point result in register R. |
7 | RST | OR the bit patterns in registers S and T and place the result in register R. |
8 | RST | AND the bit patterns in registers S and T and place the result in register R. |
9 | RST | EXCLUSIVE OR the bit patterns in registers S and T and place the result in register R. |
A | R0X | ROTATE the bit pattern in register R one bit to the right X times. Each time place the bit that started at the low-order end at the high-order end. |
B | RXY | JUMP to the location in the memory cell at address XY if the bit pattern in register R is equal to the bit pattern in register number 0. Otherwise, continue with the normal sequence of execution. |
C | 000 | HALT execution. |
D | RXY | JUMP to instruction in RAM cell XY if the content of register R is greater than (>) the content of register 0. Data is interpreted as integers in two's complement notation. |
Vole.Machine.Language.Simulator.GUI.mp4
- Qt Framework: Ensure that Qt (version 5 or later) is installed on your system.
- C++ Compiler: A compatible C++ compiler is required.
- CMake: Optional, if you prefer using CMake as the build system.
-
Clone the Repository:
git clone https://github.com/esraa-emary/Vole-Machine-Language-Simulator-GUI.git cd Vole-Machine-Language-Simulator-GUI
-
Build the Project:
- Ensure that CMake and Qt are installed.
- Create a build directory:
mkdir build && cd build
- Run CMake:
cmake ..
- Compile the project:
make
-
Run the Application:
./Vole-Machine-Language-Simulator
- Get the latest version of Vole Machine Language Simulator GUI: Download Here
Visit the release page to download the precompiled binaries for your system. Extract the downloaded file and run the executable to start using the simulator!
- Load Instruction File: Use the 'Open Instruction File' button to load a Vole machine code file in
.txt
format. - Fetch and Decode: Click 'Fetch' to load the instruction into the Instruction Register, then click 'Decode' to parse it.
- Execute: Use the 'Execute' button to run the decoded instruction, updating memory and registers accordingly.
- Control Execution:
- 'Run One Cycle': Execute a single instruction cycle.
- 'Run Until Halt': Continuously execute instructions until a halt condition is met.
- Reset and Clear: Options are available to reset the program counter or clear memory and registers as needed.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes, ensuring adherence to the project's coding style.
- Commit your changes with clear and concise commit messages.
- Push your changes to your forked repository.
- Submit a pull request detailing your changes and the motivation behind them.
Please ensure that your contributions include relevant documentation and, if applicable, update existing documentation to reflect your changes.
We would like to thank our professor, Dr. Mohamed El-Ramly, for his guidance and support throughout this project and our academic journey. We are grateful for the opportunity to work on this project and develop our programming skills.
Prefer the classic console-based experience? Check out the Vole Machine Simulator Console Version: Console Version Repository
- Esraa Emary Abd El-Salam: GitHub - LinkedIn
- Mohammed Atef Abd El-Kader: GitHub - LinkedIn
- Nagham Wael Mohammed El-Sayed: GitHub - LinkedIn
This project is licensed under the Mozilla Public License 2.0. See the LICENSE file for more details.