- Java compiler
- C lang compiler to x86 assembly lang
- Crypto compiler
- Android compiler
- GNU Compiler Collection(gcc)
-
syntax analysis
-
semantic analysis
-
Intermediate code generation
-
Code optimization
-
Code generation phase
-
Symbol table management
-
Error handling
-
Data-flow analysis
-
Compiler-construction toolkits
-
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
- 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
- Parser algorithm
-
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
- yacc
-
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
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
-
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: