2

Compiler Design - ABM File Reader with Memory Management

A C-based stack-based ABM (Assembly-Based Language) file reader designed with advanced memory management features, including a Memory Bus for concurrent variable access and a Cache Memory system for optimized speed.

Compiler Design - ABM File Reader with Memory Management

Overview

This Compiler Design project, developed in association with the University at Albany, SUNY, is a comprehensive system that reads and processes stack-based ABM (Assembly-Based Language) files, using advanced techniques for efficient memory management. It handles complex ABM code, variable scope management, and ensures concurrent access to global variables through the implementation of a Memory Bus.

The inclusion of a Cache Memory system further optimizes the speed of variable access, offering a robust solution for efficient assembly programming.

Key Features

  • ABM File Reader:

    • A C-based file reader designed to interpret stack-based Assembly-Based Language (ABM) code.
  • Memory Bus:

    • Implements a Memory Bus to manage concurrent access to global variables efficiently.
  • Cache Memory System:

    • Enhances variable access speed using a Cache Memory system, optimizing the performance of assembly programming.
  • Variable Scope Management:

    • Manages variable scopes to ensure correct handling of variables during the execution of ABM code.

Tech Stack

  • Programming Languages: C, Assembly-Based Language, MIPS
  • Version Control: Git, GitHub
  • Operating System: Linux, Ubuntu
  • Project Management Method: Agile-based

Development & Setup

This project was developed using Agile methodologies, with version control managed via Git and GitHub. The development environment is optimized for Linux systems, specifically Ubuntu.

  1. Install dependencies and run:
    git clone https://github.com/anudeep-17/Compiler_Design
    cd compiler-design
    make
    ./run_abm_reader
    

Access & Documentation


This project showcases skills in low-level programming and memory management, offering a well-rounded solution for handling complex assembly-based language files and optimizing system performance.