type
status
date
slug
summary
tags
category
icon
password

1 编译原理概述


1.1 What is the compiling?

简单来说,编译是将高级语言转换成计算机硬件能识别的低级语言的过程。
其中,高级语言可以是C语言,Java,C++这种,低级语言可以是汇编语言,也可能是计算机目前唯一能识别的语言——机器语言。
编译程序,我们可以将其视为将一种语言翻译为另一种语言的程序。
notion image

1.2 Why we should learn compiling?

通过对编译原理这门课程的学习,我们会对编译的过程有更加具象的认识,同时,编译时用到的很多思想是我们在诸如软件开发或者其他的工作中会用到的。
总的来说,我们不是真的要学习如何去写一个编译器(当然这也可以是我们的一个学习目标),更重要的是学习其中的一些方法和思路,最终将其用到我们未来的研究和工作中。
 

1.3 How we could learn compiling?

在正式学习汇编之前,我们需要了解到关于汇编的一些基础概念和分支。
notion image
 

1.3.1 翻译

翻译:指把某种语言的源程序,在不改变语义的条件下,转换成另一种语言,即目标语言程序。
notion image

1.3.2 编译与解释

翻译的实现方式有两种。
  • 编译:专指由高级语言转换为低级语言,整个程序翻译。(效率更高)
  • 解释:接受某种高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这个句子的执行结果,然后再接受下一个语句,类似于同声传译。不生成目标文件,直接执行源代码文件。
 

1.3.3 编译的转换过程

1.3.4 编译程序的五个阶段

  • 词法分析:对源程序的字符串进行扫描和分解,识别出每个单词符号。
  • 语法分析:根据语言的语法规则,把单词符号分解成各类语法单元。
  • 语义分析与中间代码生成:对各种语法范畴进行静态语义检查,若正确则进行中间代码翻译。
  • 代码优化:遵循程序的等价变换规则。
  • 目标代码生成:将中间代码变换成特定机器上的低级语言。
notion image
 

📎 参考文章

 
💡
有关问题,欢迎您在底部评论区留言,一起交流~
软件工程:软件工程基础OS 复习范围
Loading...
Koreyoshi
Koreyoshi
一个无可救药的乐观主义者
Latest posts
软件测试:控制流测试
2025-3-4
软件测试:边界值测试
2025-3-4
软件测试:基于决策表的测试
2025-3-4
软件测试:等价类测试
2025-3-4
软件工程:软件体系结构设计
2025-3-3
数列并项求和中的周期性
2025-3-3
Announcement
🎉写给自己的2025心愿🎉
保研
国奖
完善博客
学一门乐器
发表一篇论文
拍摄人生照片
去3个城市旅游
专业课知识视频
拍摄毕业季视频
----- 2025 ------
👏希望我们一起变好👏