0%

一、理论

  • 前端:分析部分,包括词法和语法分析,符号表建立,语义分析,中间代码生成,错误处理
  • 后端:综合部分,包括与机器有关的代码优化,目标代码生成,符号表操作,错误处理
  • 编译有 5 个阶段,分别是:词法分析,语法分析,语义分析和中间代码生成,代码优化,生成目标程序。有两个事件贯穿其中,即符号表管理和错误处理。也就组成了 7 个逻辑部分。
  • 字母表和符号串
    • 符号:可以理解为一个个的字母,比如说 $a, b, c, \phi$
    • 字母表:是符号的集合,比如说 $\sum = {a,b,\phi}$
    • 符号串:是符号的序列:比如说 $abababa$
    • 空符号串:无任何符号的符号串,即 $\epsilon$
    • 符号串集合:由符号串构成的集合
    • 语言:一种特殊的符号串集合
  • 文法就是语法,规定了语言的结构。
  • 左递归文法只是无法采用自顶向下的分析方法,并不是一无是处
  • 运行时存储组织与管理要回答的问题是

    • 数据结构在内存里是如何表示的
    • 函数在内存中是如何表示的

      • 需要记住调用前的状态,以便在调用结束后返回。
      • 需要提供一种办法,在调用函数和被调函数之间传递参数,返回值
      • 满足 Scope 的要求,能够找到所有的数据结构
    • 他们在内存中如何放置,如何管理(这里面有个专题是垃圾回收机制

    • 感觉这里很有意思,操作系统将内存封装成了一个数组,编译器决定了这个数组的使用方式。
  • 存储管理主要有两个方面:
    • 静态存储管理,对应的就是实验中对于 .data 的处理
    • 动态存储管理,这部分在编译实验中被拆成了两个部分,一个部分在 llvm 翻译的时候完成,比如说栈式符号表之类的东西就出现在此处,一部分在 mips 翻译的时候完成,比如说函数运行栈的结构。这就导致似乎没法建立一个统一的体系,只能说和理论在表面上看有些出入。
  • 非分程序的结构语言:每个可独立进行编译的程序单元时一个不包含有子模块的单一模块。如 FORTRAN 语言。另外常说的 Module 这个概念,也可能是来自这个语言img
  • IR(Intermediate representation):不同层次的 IR 代表了不同层次的抽象(类型、操作)通过分层抽象,实现最大限度的重用。
  • 错误分类:
    • 语法错误:不符合词法和语法规则的错误。
    • 语义错误:
      • 程序不合语义规则。比如说未定义,就使用。
      • 超越具体计算机系统的限制,比如说栈溢出,类型溢出等。

二、压缩文法

需要压缩文法包括两种:

  • 有害规则,就是 $U::=U$ 这种,这种十分显然,所以就不说了。
  • 多余规则,针对语法规则的左部(左部是一个符号),又分为
    • 不可达符号:就是这个左部没法由识别符号推出,那么就是不可达的。这种非常好识别,只需要进行一个符号的 BFS 即可。
    • 不活动符号,就是形如 $A ::= Aa $ 这样的规则,会导致一直循环,没完没了。
Read more »

一、构造控制流图(CFG)

关于优化,真的是一个令人生畏的事情,大致来说,一个优化分为两个部分:

  • 分析
  • 改写

但是在课程中大多只交第一个部分,而不讲第二个部分,这就导致一种“无意义性”,如果分析不能用于改造程序,那么就没有什么学习的动力。所以如果想要学好理论,那么必须要有一个宏观的角度去看发生的一切事情。

按照 《Engineering a Complier》的观点,按照优化的范围去给优化分类,大致可以分为以下四类

类型 范围 举例
局部优化 限制在某个基本块中 公共子表达式提取,局部值编号,树高平衡,窥孔优化
区域性优化 某几个有联系的基本块 循环展开
全局优化(过程内优化) 组成一个完整过程的基本块 图着色寄存器分配
过程间优化 多个过程 函数内联,过程间常数传递

至于为什么有这么多分类,是因为优化是一个很严谨而且需求具有多样性的事情,不同的范围对应的条件和限制是不一样的,那么可以进行优化的力度和策略也就是不一样的。

对于局部优化,因为它在一个基本块内,所以有两个极好的性质可以应用

  • 语句是顺序执行的。
  • 如果一条语句被执行,那么整个基本块的语句都会被执行。

从某种意义上讲,基本块让人们不再直面指令,而是变成面对一个数据流图。

而其他三种方法,都需要建立在对于 CFG 图上,也就是说,首先就是分析 CFG 图。另外还有一段话很有意思:

在进行区域性优化的时候,我们可以考虑通过某种图论性质定义的 CFG 子集,比如说支配图或者强联通分量。

通过一道题来介绍一下分法,不过介绍之前,还是说一下,此时的代码一定是 ir 了,但是对于课设用到的是那种 ir 呢?应该是某种神秘的四元式(这里插一嘴,llvm 也可以被认为成一种神秘四元式,即只有一小部分指令有大于 2 个的操作数)。

有三条规则:

  • 程序入口第一条语句
  • 任何可以被当做跳转目标的语句
  • 跳转语句后面的一条语句
Read more »

一、直观理解

1.1 语法分析的目的

语法分析是在进行完词法分析后进行的步骤,词法分析会将一个个的字母拆解成不同的符号,这些符号会被组成一个线性的数组交给语法分析部分,语法分析不会会将这个线性的数组重新组织成一个语法树,交给后面的语义分析部分。

至于为什么要组织成一个树形结构?其实也并不是一个必选项,其实本质是这个线性数组可以被语法规则完全的接受。只不过是因为特定的语法规则刚好可以被组织成一个语法树的形式(语法树可以看做是语法分析的“历史记录”),而且语法树的结构又被后面的语义分析部分所需要,所以我们才恰好需要这棵语法树。

1.2 编译中的矛盾

Read more »

一、文法的种类

1.1 分类定义

Chomsky 文法定义:

  • $G = (V, V_t, P, Z)$
  • $V$:符号集合
  • $V_t$:终结符号集合
  • $P$ :有穷规则集合
  • $Z$:是被符号,不能是终结符

关于不同文法的区别

Read more »

一、IO

是没有办法使用 C 风格的 IO 去输入和输出字符串的,也就是说,下面的程序是会发生段错误的。

#include <bits/stdc++.h>

using namespace std;

int main() 
{
	string s;
	scanf("%s", s);
	printf("%s", s);
	return 0;
}

如果想要进行正确的 IO,需要利用 cin, cout ,如下所示

#include <bits/stdc++.h>

using namespace std;

int main() 
{
	string s1, s2, s3, s4;

	cin >> s1;
	// cin.getline(s2, 20);
	// cin.get(s3, 20);
	getline(cin, s4);

	cout << s1 << endl;
	// cout << s2 << endl;
	// cout << s3 << endl;
	cout << s4 << endl;
	return 0;
}
Read more »

一、文化教育类

  1. 硕士学位:the master’s degree
  2. 博士学位:the doctor’s degree; Ph. D. (Doctor of Philosophy)
  3. 学术表现:academic performance
  4. 学术成就:academic performance
  5. 成就;成绩:accomplishment
  6. 求职者(2 个):job hunter; job applicant
  7. 简历:resume
  8. 传统书籍:traditional book
  9. 理论与实践:theory and practice
  10. 课外活动:extracurricular activity
  11. 拓宽视野:broaden one’s horizons
  12. 必修课:compulsory course
  13. 选修课(3 个):selective course; optional course; elective course
  14. 教学大纲:syllabus
  15. 素质教育:quality-oriented education
  16. 应试教育:test-oriented education
  17. 学生会:Student’s Union
  18. 名牌大学:prestigious university
  19. 激烈竞争:fierce competition
  20. 身心健康:physical and mental health
  21. 树立积极榜样:set a positive example
  22. 代沟:generation gap
  23. 娱乐活动:recreational activity
  24. 丰富知识:enrich one’s knowledge
  25. 尖子生(2 个):top student; straight-A student
  26. 发挥潜能:fulfill one’s potential
  27. 高校排名:university ranking
  28. 高校扩招:expansion of college enrollment
  29. 竞争性考试:competitive examination
  30. 高考:the college entrance examination
  31. 辍学:drop out of school
  32. 研究所:research institution
  33. 努力(3 个):attempt; endeavor; strive;
  34. 接受教育:receive education
  35. 实现目标:realize the goal
  36. 劳动力市场:labor market
  37. 获得大学文凭:get diploma
  38. 外来务工人员:migrant worker
  39. 课外班:after-school class
  40. 被……录取:be admitted to
  41. 重要决定:significant decision
  42. 报名参加(2 个):enroll for; sign up for
  43. 重点学校:key school
  44. 职业学校:vocational college
  45. 重视(4 个):put emphasis on; attach importance to; emphasize; highlight
  46. 教育资源:educational resources
  47. 欠发达地区:underdeveloped region
  48. 促进教育公平:promote equity in education
  49. 改善教育设施:improve educational facilities
  50. 义务教育:compulsory education
  51. 乐器:instrument
  52. 绘画工具:painting tool
  53. 毕业生:graduates
  54. 教育工作者:educators
  55. 培养(3 个):cultivate; forster; develop
  56. 关键时期:crucial period
  57. 养成……的习惯:develop a habit
  58. 培养……的兴趣:cultivate an interest
  59. 基本素质:essential quality
  60. 光明前途:promising future
  61. 大一学生:freshman
  62. 大二学生:sophomore
  63. 大三学生:junior student
  64. 大四学生:senior student
  65. 文科(2 个):liberal arts; humanities
  66. 理科:sciences
  67. 招生录取:recruitment and enrollment
  68. 食堂(2 个):canteen; dinning hall
  69. 员工:staff
  70. 全体老师:faculty
  71. 职业培训:vocational training
  72. 就业指导:career guidance
  73. 激发兴趣:stimulate interest
  74. 学生减负:reduce study load
  75. 研讨会:seminar
  76. 考研:take the postgraduate entrance exam
  77. 创业:start one’s own business
  78. 出国留学:study abroad
  79. 申请入学:apply for admission to
  80. 专门人才:professional personnel
  81. 奖学金:scholarship
  82. 学分:credits
  83. 本硕毕业论文:thesis
  84. 博士毕业论文:dissertation
  85. 学费:tuition fee
  86. 教授:professor
  87. 副教授:associcate professor
  88. 讲师:lecturer
  89. 学习氛围:learning atmosphere
  90. 逃课:skip class
  91. 德智体美劳全面发展:all around development of moral, intellectual, physical, aesthetic and labor education

二、地域环境类

  1. 环境污染:enviromental pollution
  2. 空气污染:air pollution
  3. 水污染:water pollution
  4. 一次性塑料袋:disposable plastic bag
  5. 节能环保:energy saving and enviromental protection
  6. 淡水资源短缺:the shortage of fresh water
  7. 沙尘暴:sandstorm
  8. 动物灭绝:extinction fo animals
  9. 濒危动物:endangered animals
  10. 生态失衡:the disruption of the ecological balance
  11. 再生资源回收:the recycling of renewable resources
  12. 绿色能源:green energy
  13. 过度使用农药:the over-usage of pesticide
  14. 乱砍滥伐:the over-cutting of the forest
  15. 频繁的水旱灾:frequent floods and droughts
  16. 灾难性的:devastating
  17. 咸水湖:saltwater lake
  18. 淡水湖:fresh lake
  19. 捕鱼业:fishing industry
  20. 海拔 X 米:X meter above the sea level
  21. 平方千米:square kilometer
  22. 候鸟:migrant bird
  23. 迁徙路线:migrant route
  24. 迁徙过程:process of migration
  25. 观鸟者:birdwatcher
  26. 中国传统园林:traditional Chinese garden
  27. 位于:be located in
  28. 栖息地:habitates
  29. 旅游目的地:destination
  30. 文化遗产:cultcural heritage
  31. 古迹:historical site
  32. 珠江:the Pearl River
  33. 长江:the Yangtze River
  34. 黄河:the Yellow River
  35. 发源地:birthplace
  36. 三角洲地区:delta region
  37. 注入;流入:empty into
  38. 流经:flow through
  39. 制造中心:manufacturing center
  40. 灌溉:irrigate
  41. 景点:scenic attraction
  42. 沿海城市:coastal city
  43. 风景独特(2 个):unique natural scenery; distinctive scenery
  44. 云海:the sea of cloud
  45. 宏伟壮丽:miganificence
  46. 湿润气候:humid climate
  47. 大熊猫:gaint panda
  48. 以竹为食:bamboo-eating
  49. 被列为(3 个):be listed as; be grouped as; be classified as;
  50. 熊科:bear family
  51. 面临威胁:under threat
  52. 生存(2 个):existence; survival
  53. 草药:herb
  54. 宜人的居住环境:pleasant living enviroment
  55. 节约自然资源:conserve natural
  56. 砍伐森林:deforestation
  57. 沙漠化:desertification
  58. 自然灾害:natural disaster
  59. 垃圾分类:garbage classification
  60. 低碳经济:low carbon economy
  61. 全球变暖:global warning
  62. 环保产品:enviroment-friendly products
  63. 废水(2 个):waste water; sewage
  64. 环境恶化(2 个):environmental degradation ; environmental deterioration
  65. 开发可再生资源:develop the renewable resources
  66. 污染预防:pollution prevention
  67. 污染控制:pollution control
  68. 控制环境污染:curb the enviromental pollution
  69. 提倡:advocate
  70. 号召:call on
  71. 自然宝藏:natural treasure
  72. 享誉盛名:earn a great reputation
  73. 有 X 年历史:has a history of X years
  74. 渔村:fishing village
  75. 水乡:water town
  76. 偏远地区:remote area
  77. 日出:sunrise
  78. 日落:sunset
  79. 温泉:outspring
  80. 瀑布:waterfall
  81. 建筑:archietecture
  82. 寺庙:temple
  83. 摄影:photography
  84. 背包旅行:backpacking
  85. 背包客: backpacker
  86. 络绎不绝:in an endless steam
  87. 住宅:dwelling
  88. 集市:markect
  89. 庭院:countryard
  90. 美不胜收:be too beautiful to be absorbed all at once
  91. 闻名遐迩:enjoy widespread renown
Read more »