Giter Club home page Giter Club logo

gcc_lite's Introduction

gcc_lite

Toy C-Compiler for course CS335, 2021 - II

Source language :- C

Implementation language :- Python

Target language :- x86 assembly language

Members

Structure

For installing Dependencies

$ make dep
# OR
$ pip install --ignore-installed -r ./requirements.txt  

For building executable

$ make clean # For removing the build
$ make

For running the compiler:

./bin/gcc_lite [-o outfile] tests/helloworld.c 

For more informations about usage

usage: gcc_lite [-h] [-d] [-o OUT] [-l] [-D] [-p] [-I] [--sym] [-S] [-R] input

Compiler for C programs

positional arguments:
  input              C program file to compile

optional arguments:
  -h, --help         show this help message and exit
  -d, --debug        Generate assembly with extra information (for debugging purposes)
  -o OUT, --out OUT  File name to store generated executable
  -l, --lex          Store output of lexer
  -D, --dot          Generate AST graph as DOT format
  -p, --png          Generate AST graph as png format
  -I, --ir           Dump the generated Intermediate representation
  --sym              Dump the symbol table
  -S, --asm          Store the generated assembly file
  -R, --exec         Execute the generated program

Features

Basic Features

  • Native data types: Int, Char, Float
  • Variables and Expressions
  • Conditional: if, if-else, switch-case
  • Loops: for, while, do-while
  • Break, Continue
  • Switch Case
  • Arrays: Single and multidimensional
  • Input,output
  • Functions, recursion
  • Pointers: Single and multilevel
  • Simple library functions
  • Arithmetic operators
  • Logical and bitwise operators
  • Struct user defined data type
  • Typedef

Advanced Features

  • Dynamic memory allocation (malloc, free)
  • Register allocation optimization using conditional spilling
  • File Handling
  • Fork and exec system calls
  • Storage Optimization for Char and string
  • Nested Struct and Array Initializers
  • Multidimensional arrays as function parameters
  • Short circuit expression evaluation

Acknowledgments

  • Amey Karkare (Course Instructor CS335)

License

This project is licensed under the MIT License

References

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.