计算机组成原理 03 1.2.3 计算机的层次结构 编译程序 解释程序

本文主要是介绍计算机组成原理 03 1.2.3 计算机的层次结构 编译程序 解释程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

        • 计算机系统的层次结构
        • 计算机层次结构之间的联系
        • 虚拟机和裸机
        • 编译型语言和解释型语言
        • 编译型语言和解释型语言的区别
        • 编译程序和解释程序的区别 如何理解编译/解释速度 和运行速度
        • 编译型语言和解释型语言的优劣
        • 编译 汇编 解释
      • 编译程序和解释程序写题目的时候需要注意的点

计算机系统的层次结构

计算机的层次结构由六层组成:
在这里插入图片描述

接下来我们对这个结构图进行分析:

首先需要知道的是:计算机只能识别二进制的01,所以说不管是什么级别的语言都必须要转化成机器语言才能被CPU执行。在实际硬件中,硬件层又分为了传统机器层和微程序机器层,传统机器层是对计算机指令的一种识别,例如0000001代表乘法指令,而微程序机器层则是对该指令的分解,即底层执行该指令需要进行的微操作,例如取指令,分析指令。
但是机器语言是难以记忆的,人们如果想要知道一条指令的含义还需要对该二进制进行计算,所以衍生出了汇编语言,汇编语言其实就是一种英文助记符,其和机器语言是一一对应的,一条汇编语言对应一条机器语言指令,例如汇编语言load 5表示取5号地址存储单元的数据,对应的机器语言就是000000110000110,简单来说汇编语言就是机器语言的一种英文表示,只是为了让指令的含义看起来更容易识别,所以机器语言和汇编语言都是低级语言。
低级语言的编程终归是繁琐的,最终衍生出了高级语言,高级语言的一条语句可对应多条汇编语言,程序员的编程效率也得到了提高。
使用汇编语言和高级语言的机器都是属于虚拟机器,因为其无法直接执行汇编语言或者高级语言,必须需要将其翻译成机器语言。并且在翻译的过程中还需要操作系统进行干预,由此最终构成了计算机的层次结构。

软件和硬件之间的交界面是指令集体系结构(ISA)ISA定义了计算机可以执行的所有指令的集合,简单来说ISA就是定义了二进制机器代码表示什么指令,并且该台计算机所能使用的指令集合。ISA是软件能够感知的部分,也称软件可见部分。(为什么ISA软件能够感知我不是很理解)
我的理解是ISA是一种指令的规定,而计算机中硬件的实行需要上层的软件来进行指挥,例如操作系统,所以说ISA是软件能够感知的部分。

计算机层次结构之间的联系

1.在计算机的层次结构之中,上层是下层功能的扩展,下层是实现上层的基础。
这句话很好理解,从机器语言层高级语言层,随着编程语言的高级化,计算机的功能明显得到了扩展,所以上层是下层功能的扩展。上层的运行脱离不了下层,高级语言必须转换成机器语言才能执行,所以下层是实现上层的基础。
2.上层和下层的关系是相互依存,且可分割的。
这里注意的点:上层和下层是可以分割的,这个不好理解,实际下层即使不需要上层也可以运行,初代计算机就是使用机器语言直接进行编程的,那时候也不存在汇编层这些,所以下层是可以脱离上层正常运行的,只不过功能会收到限制。
3.下层对于上层是支撑作用,不是限制作用
实际上这个我感觉限制也是说得通的,但是题目不运行这样写,没办法。

虚拟机和裸机

裸机:裸机是没有配备软件的计算机。

虚拟机:虚拟机是软件实现的机器。(操作系统层,汇编语言层,高级语言层),不包含ISA,ISA应该只能算是一种规定,不能算是软件吧。

编译型语言和解释型语言

高级语言如果想要执行一定需要翻译成机器语言,翻译过程的不同由衍生出了不同类别的高级语言,可以分为以下两种:
   ( 1 ) (1) (1)编译型语言:
编译型语言由分为两种:
1.使用编译程序(编译器)直接将高级语言翻译成机器语言。
2.使用编译程序(编译器)先将高级语言翻译成汇编语言,再使用汇编程序将汇编语言翻译成机器语言。

无论是第一种还是第二种,只要翻译过程正常运行结束,都会在磁盘上生成一个.exe结尾的二进制可执行文件,用户双击该文件便可以执行。

注:这个过程中可能需要发生链接。

   ( 2 ) (2) (2)解释型语言
解释型语言使用解释程序(解释器),其特点是每将一条语句翻译成机器语言以后,就立即执行,然后再翻译下一条语句,再执行下条语句。

编译型语言和解释型语言的区别

同:
无论是编译型语言还是解释型语言,都需要先将高级语言翻译成机器语言才能被计算机执行。

异:
编译型语言翻译以后是生成二进制的可执行文件,是否运行这个程序由用户决定,解释型语言语言翻译过程相当于运行,其是直接对源代码进行翻译,每翻译一句,执行一句,且不生成可执行文件。

编译程序和解释程序的区别 如何理解编译/解释速度 和运行速度

首先给出两者的比较:

类型是否一次性编译/解释完成编译/解释时间运行速度
编译程序
解释程序

1.是否一次性编译/解释完成:很好理解,不解释了。

2.编译/解释时间:
编译程序是一次性将高级语言转换成机器语言,在转换的过程中是不运行这个高级语言程序的,其在编译的过程中只做编译这一个工作
解释程序:解释程序在将高级语言转换成机器语言的过程中,其是解释一句,然后运行一句,所以解释程序的编译时间说的不是总的编译时间,而是单条语句的编译时间,所以肯定是短于解释程序了。

3.运行速度
虽然我们这里写的是编译程序和解释程序的运行速度,但是实际上应该理解为编译型语言的运行速度和解释型语言的运行速度,这里一个需要理解的词语是运行速度,对于解释型语言和编译型语言来讲两者对于这个词语的理解是不同的。
对于编译型语言而言:编译型语言的运行的时候只需要运行可执行程序,所以说编译程序的运行时间就是程序运行的时间,其是不包含源文件编译变成可执行程序的编译时间的,其是实实在在的运行时间。
对于解释型语言而言:解释型语言如果想要运行必须从源程序开始进行解释并且运行,所以其运行过程中既要解释,又要运行,所以其运行时间包含了编译时间和运行时间,所以说运行速度是慢于编译程序的。

编译型语言和解释型语言的优劣

   ( 1 ) (1) (1)编译型语言

优点:
1.效率高,从第二次运行开始,在代码没有变动的情况下,只需要直接加载可执行文件至内存便可运行,不需要再次进行翻译。
2.翻译工作一旦完成,在代码没有变动的情况下, 未来运行代码只需要可执行文件,不需要源代码。

缺点:
1.移植性差 因为编译型语言是根据可执行文件来运行的,但是不同平台的机器语言指令可能有些许差异,就可能导致将可执行程序放到其他平台就无法正常运行。

   ( 2 ) (2) (2)解释型语言

优点:
移植性好,因为解释型语言每次运行都是从源代码开始向下翻译的,所以翻译过程会自动适应运行平台的环境。
实现简单,解释程序实现比较简单。

缺点:
1.效率低,每次运行都需要从源代码开始翻译。
2.每次运行都需要源代码。

编译 汇编 解释

编译程序(编译器),汇编程序(汇编器),解释程序(解释器)统称为翻译程序

编译程序和解释程序写题目的时候需要注意的点

   ( 1 ) (1) (1)编译程序的作用
编译程序具有两种作用:
1.将高级语言编译成汇编语言
2.将高级语言编译成机器语言

除非题目是说编译程序只能将编译程序编译成机器语言这一种作用的时候。
不然一般默认编译程序是将高级语言转换成机器语言。一般来说编译程序和解释程序同时出现,所以编译程序和解释程序的作用都是将高级语言转换成机器语言这种说法是正确的。

   ( 2 ) (2) (2)编译和解释

有时候解释程序和编译程序可能都会使用编译时间来进行比较,这时候不要转牛角尖,这种说法对于解释程序也是可以的。

这篇关于计算机组成原理 03 1.2.3 计算机的层次结构 编译程序 解释程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/257948

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente