软考基础知识—编译原理

编译原理和组成原理这一块,是我们比较头疼的。这一块接触的比较少,所以再理解起来的时候,就比较困难。但是所有的知识都是相联系的,万变不离其宗。

例如,学习组成原理的时候,我们联系我们以前的拆装机 ,学习编译原理的时候,我们联系我们学的java和.Net等编程语言等。

由于,计算机的硬件只能识别0和1,组成的机器指令程序,所以计算机编程语言由低级语言(机器语言、汇编语言)发展到了我们现在用的高级语言(java、.net、VB、C++等) 。

为什么我们说这一块的学习,要联系我们的java呢?

Java是一种编程语言,当我们编写好代码的时候,它是怎么跟计算机的硬件打交道的呢?我们在安装Java的时候,我们需要安装java虚拟机。它是一个想象中的机器,有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

导入java语言虚拟机后,java语言在不同平台上运行时,就不需要重新编译。因此跨平台性好。java编写的程序执行的过程是,只需要在java虚拟机上运行目标代码(字节码),就可以在多种平台上不加修改地运行,最后虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

这就相当于是,java的虚拟机就相当于是一个中间码,负责跟前台与后台进行沟通交流。例如:A同学会说汉语,B同学只会说英语。A与B要进行交流,那只能找一个既会英语又会汉语的翻译。

因此高级语言要想让计算机硬件识别,就需要经过转换。这里主要介绍一下编译性语言和解释性语言。

编译性语言:在程序执行之前就把源程序全部编译成二进制代码的可运行程序。

解释性语言:在程序运行期间把做好的源程序翻译一句,然后执行一句,直至结束!

区别:

编译型语言:执行速度快、效率高;依赖编译器、跨平台性差些。如C、C++、Delphi、Pascal,Fortran。

 解释型语言:执行速度慢、效率低;依赖解释器、跨平台性好。如Java、Basic.

通俗的说,编译语言是在编译后可以直接运行,而解释语言的执行需要一个解释环境。

编译器的工作流程图如下:

  编译原理各阶段介绍:

词法分析:逐个扫描源程序字符,识别出“单词”符号

语法分析:关注句子结构,如表达式、语句、程序

语义分析:各个语法成分的含义,关注句子的含义

中间代码生成:根据语义分析的输出生成中间代码。中间代码,尽管可以将源程序直接翻译成目标语言代码,但使用机器无关的中间表示形式具有两优点:

1.重置目标比较容易

不同机器上的编译器可以在已有前端的基础上附加一个适合这个机器的后端来生成。

2.可以在中间表示上应用与机器无关的代码优化器

代码优化:生成的中间代码在时间上和空间上有较大的浪费。所以需要进行优化

    目标代码生成:把中间代码转换成指令代码或汇编指令代码    

编译出错处理:

1.静态错误:编译阶段发现的程序错误,分五语法错误和静态语义错误。

2.动态错误:发生在程序运行是,例如除数为零,引用数组元素下标错误等。

编译原理,听起来貌似很玄乎。但是我们前面既学习过Java、VB.Net,又接触过C语言和C++。所以解释性语言和编译性语言,都不陌生。接下来要学习的文法,其实就是对一种语言语法的结构的形式规则的一种描述。而对应到我们的编程中,就是我们之前VB.NET和VB中定义的语法规则。必须以下划线和字母开头。文法可以说就是检测这个用的。

软考基础知识—编译原理,码迷,mamicode.com

时间: 2024-10-10 03:46:59

软考基础知识—编译原理的相关文章

软考基础知识总结

计算机中的转换 1GB=1024MB=1024*1024KB=1024*1024*1024B 1B=8bit TB>GB>MB>KB>B 计算机中内存容量的计算是以字节(B)为单位的,CPU的运行位数是以bit为单位的 校验码 先进度排名:奇偶<循环冗余校验<海明 奇偶:不能判断具体哪位出错 海明码:2^K-1>=n +K 循环冗余:校验码位置放于编码的最后一位 原码.补码.反码.移码 1.正数的原码.补码.反码均为其本身: 2.负数(二进制)的原码.补码.反码公

软考——CPU构成与原理

一.基本组成: 运算器: 算术逻辑单元(ALU):负责数据处理,实现对数据的算术运算和逻辑运算,暂时存储计算结果等 累加寄存器(AC):当ALU执行算术或是逻辑运算的时候,为ALU提供一个工作区. 数据缓冲寄存器(DR):作为CPU和内存,外围设备之间数据的中转站.是CPU和内存,外围设备之间在操作速度上的缓冲 状态条件寄存器(PSW):保存算术指令和逻辑指令的结果,分为状态标志和控制标志. 控制器: 程序计数器PC:具有寄存信息和记数两种功能,又称为指令计数器. 指令寄存器IR:当CPU执行一

软考-程序设计语言基础(编译原理)

首先声明一下,本系列软考的文章是针对软件设计师(中级)的. 在软件设计师考试中,关于程序设计语言这一章节,前面的知识很基础,像一些控制结构和数据类型的知识我想大家都非常熟练就没有总结在图里. 本章节的重点内容在于编译原理,编译原理指的是编译器是将汇编或高级计算机语言翻译为二进制机器语言代码的计算机程序.内容主要包括文法.正规式.有限自动机.语法推导树. 好了,不多说,还是老规矩用图来介绍. 重点看一下编译原理,展开前三项看看. 文法,是描述语法结构的形式规则: 正规式是描述程序语言单词的表达式,

软考——计算机系统知识

当我们的日常生活都离不开计算机的时候,弄懂它内部的原理是每个人都需要做的,所以在软考学习中,计算机系统主要是由三个方面来论述,硬件.体系结构和对它的测评. 一.计算机硬件基础知识 通常我们提到计算机硬件系统都会列举出运算器.控制器.存储器.输入设备和输出设备五大部件来.其中运算器和控制器被继承在一起统称为CPU,CPU细化组成又是有寄存器组和内部总线等部件.整体如下图所示: 二.体系结构 当我们站在程序员的角度所看到的计算机属性就是计算机的体系结构,程序员要能编写出可在机器上正确运行的程序所必须

QT UI 基础(二)编译原理及文件结构

uic读取由QtDesigner生成的XML格式的用户界面定义文件(.ui文件),然后生成其对应的C++头文件. 若界面文件为ZZZ.ui,则对应生成的头文件为ui_ZZZ.h.默认情况下: ①基于QMainWindow的程序,会生成一个叫ui_mainwindow.h的头文件 ②基于QDialog的程序,会生成一个叫ui_dialog.h的头文件 ③基于QWidget的程序,会生成一个叫ui_widget.h的头文件 由Qt Creator自动完成的工作有如下: (1)在生成的头文件中,首先会

软考--操作系统知识--PV操作

1.任何两个并发进程之间存在着( D)的关系. A.各自完全独立 B.拥有共享变量 C.必须互斥 D.可能相互制约 2.并发进程执行的相对速度是(D ). A.由进程的程序结构决定的 B.由进程自己来控制的 C.在进程被创建时确定的 D.与进程调度策略有关的 3.并发进程执行时可能会出现"与时间有关的错误",这种错误是由于并发进程(A )引起的. A.使用共享资源 B.执行的顺序性 C.要求计算时间的长短 D.程序的长度 4.并发进程中与共享变量有关的程序段称为(B ). A.共享子程

wifi基础知识及原理

wifi相关的文件位置: WIFI Settings应用程序位于 packages/apps/Settings/src/com/android/settings/wifi/ JAVA部分: frameworks/base/services/java/com/android/server/ frameworks/base/wifi/java/android/net/wifi/ JNI部分: frameworks/base/core/jni/android_net_wifi_Wifi.cpp wif

软考过程知识整理记录

1.二进制与十进制的相互转换 https://jingyan.baidu.com/article/597a0643614568312b5243c0.html 原文地址:https://www.cnblogs.com/gc001279/p/9486395.html

编译原理简单介绍

编译原理学习导论 大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容.编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂.我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了.在20世纪50年代,编译器的编写一直被认为是十分困难的事情,第