Skip to content
Guillaume DERAMCHI edited this page Feb 22, 2024 · 7 revisions

Virtual processor Team 2 Wiki

Project introduction

Welcome to the virtual processor Team 2 wiki! This project aims to develop a virtual processor capable of interpreting and running our custom assembly language. The project is a blend of software engineering and computer architecture, bridging the gap between high-level programming and low-level machine operations.

Goal of the project

The primary goal is to create a virtual processor and an accompanying interpreter. This system will enable the execution of a custom assembly language(we chose "AT2" as a name), designed specifically for this processor. The project focuses on understanding and implementing core concepts of computer architecture and assembly language processing in a virtual environment.

Development specifications

  • Programming language: The project is to be developed in plain, portable C, using only the C standard libraries.
  • Recommended tools:
    • Compiler: gcc (GNU Compiler Collection)
    • Integrated development environment (IDE): Visual Studio Code
    • CMake

Assembly language requirements

  • Minimal assembly language: Invent a minimal assembly language for the processor.
  • Instruction set:
    • Storing an immediate value in a register.
    • Copying values between registers.
    • Memory read and write operations using registers.
    • Register content comparison.
    • Unconditional and conditional jumps to labels.
    • Subroutine call and return operations.
    • Basic arithmetic operations: addition, subtraction, multiplication, division.
    • Basic logical operations: OR, AND, XOR, NOT.

Interpreter development

  • C program: Develop a C program to read and execute programs written in the custom assembly language.
  • Error checking: Ensure the program checks for both semantic validity and syntactical errors in the assembly code.
  • Virtual system call: Implement a virtual system call for displaying text in a virtual terminal accessible from the assembly code.
  • Debugging features: Include functionalities to display register contents and integrate a built-in debugger.

Documentation

  • Functional specification: Detailed description of the assembly language.
  • Technical specification: Description of how the C program operates and interprets the assembly code.

Testing

  • Write small assembly programs, akin to unit tests, to validate the functionality and reliability of the virtual processor and its interpreter.

This Wiki serves as a comprehensive guide to understanding, developing, and contributing to the Virtual Processor Project. Explore the following pages for detailed information on the AT2, interpreter functionalities, development guidelines, and more.