计算机组成原理 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

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja