计算机是如何工作的

机器语言:机器语言直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,可以被计算机直接理解,如上图的C706 0000 0002(以16进制书写,但在计算机中是二进制)

汇编语言:汇编语言是面向机器的程序设计语言,使用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。如上图的MOV X,2

高级语言:高级语言是高度封装的编程语言,使用类似于数学定义或自然语言的简洁形式进行程序编写。如上图的x=2


翻译程序

翻译程序是将一种语言程序(源)转换成另一种语言程序(目标),两者在逻辑上是等价的。翻译程序分为 编译程序解释程序 两种。

  • 编译程序:由高级语言翻译生成出低级语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。

  • 解释程序:边转换边执行,不生成目标程序

因此,我们要将高级语言最终翻译成机器语言,使得计算机得以理解并执行程序。而将高级语言翻译成汇编语言或机器语言的过程,我们就称之为“编译”。


编译器在语言处理系统中的位置

  1. 预处理器

    • 把存储在不同文件中的源程序聚合在一起
    • 把称为宏的缩写语句转换为原始语句
  2. 编译器
    • 将高级语言翻译成汇编语言或机器语言
  3. 汇编器
    • 将汇编语言翻译成可重定位的机器语言
    • 若在编译器阶段已经直接将高级语言翻译成机器语言,则可以省略汇编器
  4. 加载器
    • 修改可重定位地址
    • 将修改后的指令和数据放到内存中适当的位置
  5. 链接器
    • 将多个可重定位的机器代码文件连接到一起
    • 解决外部内存地址问题

其中,可重定位:数据在内存中存放的起始位置不是固定的,起始位置+相对地址=绝对地址


编译系统的结构

  1. 词法分析:确定各个单词的词性
  2. 语法分析:识别句子中的各个短语
  3. 语义分析:分析语句和声明是如何构成程序的

参考地址:

https://www.icourse163.org/learn/HIT-1002123007?tid=1003246005#/learn/announce

编译原理 —— 什么是编译相关推荐

  1. 基于c语言的编译原理课程设计,编译原理课程设计心得体会

    与<编译原理课程设计心得体会>相关的范文 本文由leishensc贡献 doc文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机查看. 2008-2009 学年第二学 ...

  2. 计算机应用技术编译原理考试题,《编译原理》练习题库含答案(大学期末复习资料).doc...

    <编译原理>练习测试题库 一.填空 1.若源程序是用高级语言编写的,目标程序是______,则其翻译程序称为编译程序.2.词法分析和语法分析本质上都是对源程序的______进行分析.3.如 ...

  3. 简介DOTNET 编译原理 简介DOTNET 编译原理 简介DOTNET 编译原理

    简介DOTNET 编译原理 相信大家都使用过 Dotnet ,可能还有不少高手.不过我还要讲讲Dotnet的基础知识,Dotnet的编译原理. Dotnet是一种建立在虚拟机上执行的语言,它直接生成 ...

  4. 计算机编译原理 张,计算机编译原理概念总结

    <计算机编译原理概念总结>由会员分享,可在线阅读,更多相关<计算机编译原理概念总结(11页珍藏版)>请在人人文库网上搜索. 1.第一章 引论?为什么要用编译器? 与编译器相关的 ...

  5. 编译原理语义分析_编译原理 第一章 绪论

    编译原理系列,是在学习本校 "编译技术" 这门课程时,所作记录,参考教材为 <编译技术基础教程>清华大学出版社和<程序设计语言编译原理>国防工业出版社(陈火 ...

  6. 编译原理第一章-编译原理概述

    1.1 编译过程中,语法分析器的任务不包括(A) A 分析单词是怎样构成的 B 分析单词串是如何构成语句和说明的 C 分析语句和说明是如何构成程序的 D 分析程序的结构 1.2 编写一个计算机高级语言 ...

  7. 【编译原理】山东大学编译原理复习提纲

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本. 山东大学编译原理复习提纲 一.简答与计算 1.1 必考 1. 编译过程 画图表示编译过程的各阶段,并简要说明各阶段的功能: 词法分析器:输入源 ...

  8. 【编译原理】《编译原理第二版》LR0例题代码

    以下是本人关于<编译原理第二版>里LR0例题的理解以及代码实现: /*广西师范大学 计算机科学与工程学院 GuangXi Normal University College of Comp ...

  9. java 编译原理 字符串_Java编译原理(javac)

    Java中的编译分为两个部分: 源码文件编译成字节码文件(前端编译) 字节码文件被虚拟机加载以后编译成机器码(后端编译) 对于开发来说接触的一般都是第一个步骤也就是源码编译成字节码文件(class文件 ...

  10. 编译原理 python_Python局部变量编译原理

    因此,Python将始终将每个函数中的每个名称分类为本地名称,非本地名称或全局名称.这些名称范围是独占的;在每个函数内(嵌套函数中的名称都有自己的命名范围),每个名称只能属于这些类别中的一个. 当Py ...

最新文章

  1. matlab--离散(discrete)数据绘图
  2. Centos(阿里云) 安装python3.4以及pip3
  3. mi2 android 5.0 方法,小米2/2S怎么刷Android5.0 小米2/2S刷Android5.0教程【详解】
  4. 如何用智能有效感知城市?城市大脑三大AI产品来了
  5. DE连接,创建数据集,数据导入以及数据导出(转载)
  6. linux qos 软件,linux下QOS:应用篇 - 博客 - 伯乐在线
  7. 根据数据库表gengxin实体类_ASP.NET开发实战——(十二)数据库之EF Migrations
  8. eclipse的优化操作
  9. What day is that day? 模拟
  10. 32个设计非常精美的国外网站作品范例(下篇)
  11. Java正则表达式简介及实例
  12. 按位与运算()和求余运算(%)的联系
  13. 如何申请小程序账号及上线一个体验版小程序
  14. python stm32f401_STM32学习之GPIO配置 (STM32F401ZGT6)
  15. 蓝牙无线测试相关参数与方法
  16. 腾讯云神笔低代码平台的申请没通过,只能等公测了
  17. 华为路由器BGP联邦综合实验
  18. 音视频技术开发周刊 | 277
  19. 用 Python 分析了所有微信好友,发现了一个秘密...
  20. latch: cache buffers chains 阻塞 buffer busy waits

热门文章

  1. import time python_慢步python,说说import,引用功能代码(功能库、py文件代码)
  2. C语言只能在开头定义变量?
  3. 台湾清华大学彭明辉教授的研究生手册(如何阅读论文)
  4. 二进制LDPC码的构造及译码算法
  5. 《社交红利》读书总结--如何从微信微博QQ空间等社交网络带走海量用户、流量与收入...
  6. 前端工程化实践总结 | QQ音乐商业化Web团队
  7. AFL_qemu_mode
  8. python实现数据恢复软件_恢复python
  9. 5G智慧灯杆网关实现“一杆多用”
  10. eplan部件列表手动修改_EPLAN的批量修改功能