当前位置:网站首页>[question] Compilation Principle

[question] Compilation Principle

2022-07-07 11:23:00 Hua Weiyun


Preface :
Author's brief introduction : Xiao Ming java Asking the way , Focus on the bottom of the computer , Worked as a senior engineer in the back end of a financial company , Be good at high security in the trading field / You can use / Concurrent / Performance design and architecture  
Java New star creators in the field 、 Alibaba cloud expert Blogger 、 Huawei cloud sharing expert
If this article is good , Please Focus on give the thumbs-up Collection The third company supports bloggers

Introduction to this article : Part 1 Computer er Computer thinking to master   Reason out , Compilation principle is the process of translating high-level language into assembly language or machine language , In this chapter, we introduce the principle and process of compilation design in detail , And with Graal Compiler certification

One 、 What does the compilation process look like ?

First , Let's take a look at how human translation from English to Chinese is done , We need to find the , The meaning of the word , Analyzing the grammar of this sentence , Finally, translate this sentence into Chinese through semantics , The compilation process of our computer is similar to this process


We think of things like Java、PyThon、Go、C++ Language and so on cannot be operated directly ISA Instruction set ( As mentioned above ) Of , We also need a high-level language compile Into a unified assembly language ( One tool needed is , compiler ), Then call the assembly code process .

When I Java、Python、C++ Wait for the language , The compiler will pass Analyze morphology , for example if else wait , Construct according to the obtained words and parts of speech AST(AST: Abstract syntax tree (abstract syntax code,AST) Is the tree representation of the abstract syntax structure of the source code ), The resulting tree is a tree structure in which each node represents a kind of source code , Translate it into... Through semantics IR Language ( For example java Turn into .class Bytecode ), Finally, analyze and optimize according to the optimization strategy of the compiler ( for example JVM Instruction rearrangement in ) Get the target language


Two 、 Compilation fundamentals

After being familiar with the compilation process, we still need more knowledge points to support , Learn more through a few detailed questions , What are the defined grammars ? Since we want components AST, We need to define the syntax and word position of each compilation , So the coding information will be defined 、 Encoded word 、 Specify where words appear ; Definition ( distinguish ) What is the word ? The smallest unit of identification information

For what we need to do ( Compile high-level language into assembly language or machine language ) This process , We can understand that it takes three steps to put the elephant in the refrigerator , Open the refrigerator , Stuffed with elephants , Turn off the fridge.  .

Compilation can also be divided into three steps front end -》 Interlingua -》 Back end , The front end is developed by front-end developers who need to access the current compiler , To adapt to multiple languages , The process is   High level language source code -》 Lexical analysis -》 Syntax analysis -》 artifacts AST The process of -》 To intermediate language , Intermediate language decoupling , The back-end is developed by different back-end developers who need access to the current compiler , To adapt to multiple target machine languages (ISA), Get the intermediate language -》 Do analysis and optimization , Finally, the target language is generated .


3、 ... and 、 Explain profound theories in simple language  Graal compiler

Understand the principle and process of compilation , We need to know who helped us do so much work , This tool is the compiler , Here we use the author Java Language ( You can also compile scala、python Other languages ) The compiler  Graal Introduce the above principles

Graal compiler Support cross platform based Hot spotJVM Upper intermediate language IR Language —— Bytecode , All kinds of languages (Java、Python、R、JS、C/C++、Scala) Can be in JVM On the implementation , Can enjoy JVM A high performance .GC、 Platform and other features , The picture below is GraalVM Architecture diagram of compiler

1、Truffle Framework:Java's AST Interpreter Framework(Java Of AST Interpreter frame , This thing is a tool for converting various other languages into intermediate languages )
2、Graal Compiler :JIT compiler written in Java( use Java Compiling JIT compiler , It's a JIT Just in time compiler , It has achieved 3)
3、JVM CI (JVM Compiler Interface) Interface for Writing JIT Compiler in Java(JVM Compiler interface , Is an interface specification , Defined JIT Specification of just in time compiler )
4、Java Hotspot VM( This is what we commonly call JVM
5、JIT( Just in time compiler ), This implements the front-end and back-end of the compilation principle , Just dynamically compile the language in memory

Graal Is and JDK Together with , As an internal module jdk.internal.vm.compiler in .Graal and JVM It's through JVM CI(JVM Compiler Interface) Come on communicate Of . among JVM CI It is also an internal module in jdk.internal.vm.ci in . Here is a brief introduction to the compiler proof compilation process , And how the compiler should be designed , Later, the author will explain the principle of compiler in detail .


This paper summarizes : In this chapter, we first translate what we should do in English , Reasoning out , Compilation principle of computer , And the principle and process of compiling design are introduced in detail , Zoe Graal Compiler certification .

原网站

版权声明
本文为[Hua Weiyun]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070921201616.html