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 .
原网站版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207062256160503.html