当前位置:网站首页>[question] Compilation Principle
[question] Compilation Principle
2022-07-07 11:23:00 【Hua Weiyun】
Preface :
Author's brief introduction : , 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 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 .
边栏推荐
- After the uniapp jumps to the page in onlaunch, click the event failure solution
- vim 的各种用法,很实用哦,都是本人是在工作中学习和总结的
- Add a self incrementing sequence number to the antd table component
- Go-Redis 中间件
- 0.96 inch IIC LCD driver based on stc8g1k08
- uniCloud
- [encapsulation of time format tool functions]
- 互联网协议
- 通过 Play Integrity API 的 nonce 字段提高应用安全性
- 使用MeterSphere让你的测试工作持续高效
猜你喜欢
[untitled]
The concept, implementation and analysis of binary search tree (BST)
Verilog realizes nixie tube display driver [with source code]
從色情直播到直播電商
Use metersphere to keep your testing work efficient
Drive HC based on de2115 development board_ SR04 ultrasonic ranging module [source code attached]
PostgreSQL中的表复制
科普达人丨一文弄懂什么是云计算?
RationalDMIS2022 高级编程宏程序
Electron adding SQLite database
随机推荐
Briefly introduce closures and some application scenarios
PostgreSQL中的表复制
JSON format query of MySQL
如何在博客中添加Aplayer音乐播放器
CentOS系统下Redis安装和自启动配置的步骤
Rolling puddle Uni_ App (VIII)
Deconstruction and assignment of variables
基于DE2 115开发板驱动HC_SR04超声波测距模块【附源码】
2021-04-08
The use of list and Its Simulation Implementation
使用引用
MIF file format record
Use metersphere to keep your testing work efficient
Go-Redis 中间件
Case study of Jinshan API translation function based on retrofit framework
mif 文件格式记录
Cmake learning manual
TDengine 社区问题双周精选 | 第二期
2021-05-21
Kitex retry mechanism