An open API service indexing awesome lists of open source software.

https://github.com/hiejulia/compilers

Compiler architecture / algorithms
https://github.com/hiejulia/compilers

c-compiler compiler-architecture jit jvm lex yacc

Last synced: 2 months ago
JSON representation

Compiler architecture / algorithms

Awesome Lists containing this project

README

          

# Compiler architecture/ algorithms
+ Java compiler
- C lang compiler to x86 assembly lang
+ Crypto compiler
+ Android compiler
+ GNU Compiler Collection(gcc)

## Principles of compiler design



- lexical anaylysis



- syntax analysis
- semantic analysis
- Intermediate code generation
- Code optimization
- Code generation phase
- Symbol table management
- Error handling
- Data-flow analysis
- Compiler-construction toolkits
- Parsing





### MiniC compiler
- Simplified C
- higher order calculator
- x86 instrusion set
- AT&T syntax for x86 Assembly lang

- Symbol table in miniC
- hoc6
- singly LinkedList
- BST - form Symbol table & Hash Table C
- optimization analysis func
- ADT - AVL or Red black tree

- Target code generation
- assembly lang x86

- gdb for debug FPU code

###### Architecture of MiniC compiler

- grammar specification file - yacc
- generate RPN IR, 4 tuple list IR and non optimized assembly code
- Init Symbol table by insert pre defined constants, keywords, built in functions
- Symbol table
- generate non optimized assembly lang for each parsed source lang construct
- display Symbol table
- parser : yacc

##### Algorithms
- Parser algorithm

##### Testing
- Scanner : yylex() from scaner.y
- Scan & detect lexical atoms
- Symbol table

- parser
- generated by yacc
- basic grammar
- aggregatign constructs
- control structs

- semantic analysis
- RPN, 4 tuple and raw assembly outputs

- code gen
- RPN (AST) & 4 tuple
- type checking & optimization

#### Compiler development tool
- yacc

### Java compiler

### JVM
+ Container aware Java
+ Extended language with more language features (e.g., arrays) for use in ambitious courses.•JVM target for building a compiler that generates code for the Java Virtual Machine (JVM).•Optimizer component and assignment for teaching code optimization.•Interpreter component and assignment for teaching program interpretation.•Alternate build process for building the toolset via Ant [4], in addition to Make [3], en-abling students and instructors to install the toolset on non-Unix platforms such as Windows.
+ Enable execution of Java on GPU
+ Java Stream API - Lambda - exploit processing power of GPU
+
+ GC
+ memory allocation
+
+ Core component :
+ Lexer, Parser, Visitor, AST, Constrainer, Interpreter, Compiler, VM, Debugger, Lexical analysis, Build Abstract syntax, type checking,
+ Lexx/ Parse generator : JavaCC, JLex, Cup
+ Build : Make, Ant
+ Advancd : Optimizer, Interpreter
+ Some proposal
+ JVM access check
+ Value objects
+ Diagnostic command framework
+ Low overhead way of sampling Java heap allocation
+ Concurrent monitor delfation
+
+ JVM Tools Interface
+ Adding patch points or method entry and exit
+ Enum of compiled methods
+ State changed notifications and compiled method load
+ Query support
+ Chunks of compiled methods

+ Concurrent JVM
+ access object
+
+ Lexical issue : + Symbol table (token)
+ Scanner
+ Dataflow analysis
+ Program optimization
+ Code generation
+ Runtime system

### Crypto compiler

#### Other examples of Java compiler written in Java (standard java compiler is written in C/C ++)

#### cPLC — A cryptographic programming language and compiler
https://www.researchgate.net/publication/224259131_cPLC_-_A_cryptographic_programming_language_and_compiler
https://cryptography.io/en/latest/installation/
chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/https://eprint.iacr.org/2005/160.pdf
https://crypto.iacr.org/2019/affevents/ppml/page.html

#### Courses (undergraduate/ graduate/ PhD level )
+ Modern Compiler Implementation in Java.
+ Compilers: Principles, Techniques, &Tools
+ Book
+ Compiling with C# and Java, Pat Terry, 2005, ISBN 032126360X624
+ Compiler Construction, Niklaus Wirth, 1996, ISBN 0-201-40353-6
+ Fischer, C. N. and LeBlanc, R. Jr. "Crafting a Compiler", Benjamin/Cummings, Inc., 1989.

+ Course:

The Java Virtual Machine Specification
Especially: Compiling for the Java Virtual Machine
Jasmin home page
Especially: Jasmin instruction list
LLVM home page
Interactive Illustrations For Inside the Java 2 Virtual Machine
Byte Code Engineering Library
Virtual machine literature
Chapter 15.1 Virtual Machines. In Michael Scott : Programming Language Pragmatics (3rd Ed.). Morgan Kaufmann, USA, 2009.
Chapter 10 Intermediate Representations & Chapter 11 Code Generation for a Virtual Machine. In Fischer C.N., Cytron R.K. & LeBlanc R.J.Jr. Crafting A Compiler. Addison-Wesley, 2010.
Iain Craig, Virtual machines. London, Springer-Verlag, 2006.
Bill Blunden, Virtual machine design and implementation in C/C++. Plano, Texas, Wordware Publishing, 2002.
Joshua Engel, Programming for the JAVA virtual machine. Reading (Massachusetts), Addison-Wesley, 1999.
Tim Lindholm, Frank Yellin, The Java virtual machine specification. Reading (MA) : Addison-Wesley, 1999.
Bill Venners, Inside the Java virtual machine. New York (NY), McGraw-Hill, 1998.
Jon Meyer and Troy Downing, Java virtual machine. O’Reilly, 1997
Gamma et al.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, 1995.

+ Resource :
+ http://www.cse.chalmers.se/edu/year/2018/course/TDA283_Compiler_Construction/project/
+ chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://www.cse.chalmers.se/edu/year/2016/course/TDA283_Compiler_Construction/proj.pdf

+ Progress:
+ https://www.cs.rochester.edu/~cding/Teaching/compilerProjects.html
+ done : scanner

### Resource
- http://ftp.math.utah.edu/pub/hoc/
- http://www.cs.sjsu.edu/~louden/cmptext/
http://dinosaur.compilertools.net/yacc/
- https://www.cs.purdue.edu/homes/xyzhang/spring09/notes/intro.pdf

- chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://web.cs.ucla.edu/~palsberg/course/purdue/cs352/F00/lec4.pdf