当前位置:网站首页>[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 .
边栏推荐
- 自动化测试框架
- uniCloud
- 关于SIoU《SIoU Loss: More Powerful Learning for Bounding Box Regression Zhora Gevorgyan 》的一些看法及代码实现
- 关于jmeter中编写shell脚本json的应用
- How to add aplayer music player in blog
- 聊聊SOC启动(六)uboot启动流程二
- Activity生命周期
- PR Lecture Notes
- 'module 'object is not callable error
- Verilog design responder [with source code]
猜你喜欢

科普达人丨一文弄懂什么是云计算?

Verilog 实现数码管显视驱动【附源码】

关于在云服务器上(这里用腾讯云)安装mysql8.0并使本地可以远程连接的方法

自动化测试框架

The opacity value becomes 1%

electron添加SQLite数据库

MPX plug-in

Avoid mutating a prop directly since the value will be overwritten whenever the parent component

How to add aplayer music player in blog

The use of list and Its Simulation Implementation
随机推荐
QT implements the delete method of the container
CentOS系统下Redis安装和自启动配置的步骤
Go Slice 比较
聊聊SOC启动(七) uboot启动流程三
Android 面试知识点
V-for img SRC rendering fails
Go redis Middleware
Briefly introduce closures and some application scenarios
[untitled]
数据库同步工具 DBSync 新增对MongoDB、ES的支持
通过 Play Integrity API 的 nonce 字段提高应用安全性
Drive HC based on de2115 development board_ SR04 ultrasonic ranging module [source code attached]
[untitled]
Interprocess communication (IPC)
科普达人丨一文弄懂什么是云计算?
软件设计之——“高内聚低耦合”
Add a self incrementing sequence number to the antd table component
Verilog realizes nixie tube display driver [with source code]
学习笔记|数据小白使用DataEase制作数据大屏
Project ERROR: Unknown module(s) in QT: core gui




