编译原理
编译的原理
什么叫编译?
编排和翻译.
编排什么?
编排人理解的语言.
翻译成什么?
翻译成机器能理解的语言.
根据以上,
所以
编译=高级编程语言–>中间代码–>最终的机器语言.
什么是编译器?
能干的了编译这个事的程序,叫做编译器.
编译器现在不仅仅是衡量高级编程语言的一部分,还是操作系统能够实现的命根.
想想操作系统很多代码是C写的了,但是机器无法理解C,如果你的操作系统不带上能把自己翻译成机器语言的编译器,操作系统还跑个什么劲儿?
以上,把编译器当作了一个黑盒子来看待.
下面,我们拆一下这个盒子.
它大致由以下几个组成部分.
首先是编译器的前端(front end),之所以叫前端,因为它面向的是人能懂的语言,也就是高级编程语言,C,C++.
既然有前端,那么就有后端(back end),之所以叫后端,因为它面向的是机器能理解的语言,也就是机器语言.
那么再细分,它们做了什么呢?
前端有语言的词法分析->语法分析->语义分析.
后端有中间代码的生成,以及对中间代码的优化,最后是生成目标平台的机器语言代码.
当然,内部可能还有细分,具体的可以手撕一下龙书的第一章序章来了解.
如果第一次阅读看不懂或不理解没有关系,很多内容,先有树型的认识,可以以后有了更多经验,再丰富枝叶上的细节.

手撕龙书 第一章 认识编译器相关推荐

  1. 西瓜书第一章阅读笔记

    西瓜书第一章阅读笔记 第一章 绪论 1.机器学习基本术语 2.归纳偏好 3.所有学习算法一样优秀? 4.补充资料 第一章 绪论 1.机器学习基本术语 记录:对一个事件或对象的描述,也称为"示 ...

  2. 西瓜书第一章课后习题答案

    第1章 绪论 1.1 略 1.2 参考链接:西瓜书第一章习题 - 简书 (jianshu.com) 首先明确基本合取式有多少种,设西瓜的三个不同属性的特征分别为(A1,A2),(B1,B2,B3),( ...

  3. 红宝书--第一章总结分享

    红宝书–第一章总结分享 作为一名前端开发者,我想很有必要认真阅读业界大佬的著作,这不仅能拓展认知,更能发现曾经的遗漏点和误区.为了激励自己能坚持阅读完,特在此分享自己的品读总结. 菜鸟也会变成老鸟~为 ...

  4. python矩阵乘法_鱼书——第一章 Python入门

    one 第一章 1.1 Python是什么 Python是一个简单.易读.易记的编程语言,而且是开源的,可以免费地自由使用.Python可以用类似英语的语法编写程序,编译起来也不费力,因此我们可以很轻 ...

  5. 【面试宝典】软件测试工程师2021烫手精华版(第一章测试理论篇)

    前言: 翻了很多论坛博客关于面试的文章,很多都是不完整的,还都是比较常见规规矩矩的,那大家刷过的基本都不拿出来了,都是一些大家平时见得不多,但是面试官很看中的一些题. 第一章 测试理论 一. 软件工程 ...

  6. dx12 龙书第九章学习笔记 -- 纹理贴图

    1.纹理与资源的回顾 我们其实很早就接触过纹理了,之前的深度缓冲区与后台缓冲区,它们都是通过ID3D12Resource接口表示,并以D3D12_RESOURCE_DESC::Dimension成员中 ...

  7. [OpenGL红宝书]第一章 OpenGL概述

    第一章 OpenGL概述 标签(空格分隔): OpenGL 第一章 OpenGL概述 1 什么是OpenGL 2 初识OpenGL程序 3 OpenGL语法 4 OpenGL渲染管线 41 准备向Op ...

  8. 蘑菇书 第一章绪论 习题

    强化学习的基本结构是什么? 强化学习本质上是智能体和环境的交互过程.具体来说,就是智能体根据所观测到的环境的状态输出一个动作或者决策作用在环境上,同时环境会输出下一个状态和奖励.智能体就是想要获得最大 ...

  9. 龙书第九章总结9.1

    这章主要讨论了代码的优化技术,主要是跨block的优化 局部优化 对每个代码的block内部进行优化,只涉及内部去重等 Global common subexpression subexpressio ...

最新文章

  1. 减少HQL 的MAP数
  2. mysql字符调整_mysql字符集调整
  3. 系统模块——什么是系统模块、path 路径操作、相对路径VS绝对路径
  4. 2018年高教社杯全国大学生数学建模竞赛C题解题思路
  5. VMware ESXi 6.7安装配置
  6. 基于Boost::beast模块的协程HTTP服务器
  7. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1039:判断数正负
  8. JAVA中利用DOM解析XML文档
  9. My97DatePicker 组件使用方法---My97DatePicker
  10. 超详细 CSS动画-animation
  11. vue调用企业微信API详细过程
  12. mysql with rollup_MySQL-with rollup函数运用 _20160930
  13. Web前端大作业——城旅游景点介绍(HTML+CSS+JavaScript) html旅游网站设计与实现
  14. 【文献笔记】【精读】Near-Ultrasound Communication for TV’s 2nd Screen Services
  15. 信息与计算机科学丛书,信息与计算科学丛书: 典藏版
  16. c语言点菜菜单程序大学一,数据结构实训报告 c语言点餐系统 net
  17. 32位颜色 转换成16位颜色
  18. Linux C/C++ 获取系统时间
  19. linux root删除垃圾箱,Linux 用 root 用户都无法删除的文件如何删除
  20. Element type is invalid: expected a string (for built-in components) or a class/function (for compos

热门文章

  1. ubuntu下amd超频工具_玩转GPU必备 – 我的Linux 工具箱
  2. 夏普比率和最大回撤计算方法
  3. 多项式曲线——搞清楚贝塞尔曲线、B样条曲线、Nurbs曲线的区别
  4. c语言adc0809小数点,ADC0809做AD转换的C程序
  5. 内网计算机游戏不被检测,两台未联网的Win7电脑建立局域网游戏的方法
  6. [Wi-Fi抓包篇]1. Omnipeek——抓包前准备工作
  7. 考注会会经常用计算机吗,注会机考系统计算器你会用吗?操作技巧抢先看!
  8. 计算机网络系统集成有哪些方面,计算机网络中系统集成主要包含哪些?
  9. 四川时代入选“灯塔工厂”;前程无忧上海总部正式迁入前滩T6 | 美通企业日报...
  10. 2018092609-2 选题 Scrum立会报告+燃尽图 01