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

news2024/10/7 6:45:12

文章目录

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

计算机系统的层次结构

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

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

首先需要知道的是:计算机只能识别二进制的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)编译和解释

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1119910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java学习_day03_变量数据类型运算符

文章目录 变量定义声明赋值使用简化 数据类型基本数据类型整型浮点型布尔型字符型空型 引用数据类型数据类型转换自动类型转换强制类型转换 运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符条件运算符一元运算符二元运算符三元运算符运算符优先级 变量 变量类似于数学…

毅速丨3D打印结合拓扑优化 让轻量化制造更容易

制造轻量化对于提高能源利用效率、提高产品性能和减少环境影响,推动制造业的绿色化、高质量发展具有重要的促进作用。 轻量化设计对许多领域都有着重要影响,尤其是那些需要降低能源消耗、提高运输效率或减少对环境影响的领域。如航空航天,轻量…

Qt学习:使用OpenGL绘制3D图形

文章目录 前言一、Qt下使用OpenGL绘制图形介绍二、示例完整代码总结 前言 文章中引用的内容均来自这本书中的原文:【Qt Creator快速入门_霍亚飞编著】,本文的示例也是在书中代码的基础上进行编写的(其中部分代码使用原文编译不过&#xff0c…

基于协作搜索优化的BP神经网络(分类应用) - 附代码

基于协作搜索优化的BP神经网络(分类应用) - 附代码 文章目录 基于协作搜索优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.协作搜索优化BP神经网络3.1 BP神经网络参数设置3.2 协作搜索算法应用 4.测试结果…

自然语言处理---文本预处理概述

自然语言处理(Natural Language Processing,简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域。其主要应用于:语音助手、机器翻译、搜索引擎、智能问答等。 文本预处理概述 文本语料在输送给模型前一般需要一…

【iOS】AFNetworking的基本使用

使用AFNetworking框架需要Cocoapods进行管理 所以要预先配置好Cocoapods,具体步骤见这篇文章:【iOS】CocoaPods的安装及其使用方法 简介 AFNetworking是一款cocoapods的网络请求库,在Foundation框架基础上,提供了一套简单易用的…

基于厨师优化的BP神经网络(分类应用) - 附代码

基于厨师优化的BP神经网络(分类应用) - 附代码 文章目录 基于厨师优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.厨师优化BP神经网络3.1 BP神经网络参数设置3.2 厨师算法应用 4.测试结果:5.M…

C#,数值计算——分类与推理Phylo_clc的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Phylo_clc : Phylagglom { public override void premin(double[,] d, int[] nextp) { } public override double dminfn(double[…

Studio One 6.5新版本功能讲解及一键安装下载教程

Studio One 6.5 发布:整合 Dolby Atmos 全景声,跟 Bitwig 联合推出开放的 DAWproject 格式,支持 Linux! PreSonus 的“.5”更新通常都有比较大的变化,这次也不例外。Studio One 6.5 增加了一种全新的工作方式&#xff…

基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码

基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码 文章目录 基于人工蜂鸟优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工蜂鸟优化BP神经网络3.1 BP神经网络参数设置3.2 人工蜂鸟算法应用 4.测试结果…

【计网 EMail】计算机网络 EMail协议详解:中科大郑烇老师笔记 (五)

目录 0 引言1 电子邮件EMail1.1 组成1.2 SMTP协议1.3 案例:Alice给Bob发送报文1.4 SMTP总结1.5 邮件报文格式1.6 POP3协议和IMAP协议 🙋‍♂️ 作者:海码007📜 专栏:计算机四大基础专栏📜 其他章节&#xf…

【RocketMQ系列九】SpringCloudStream整合RocketMQ

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

2023-10-15 LeetCode每日一题(只出现一次的数字)

2023-10-15每日一题 一、题目编号 137. 只出现一次的数字 II二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并…

MySQL数据库查询实战操作

前置条件: 创建库:MySQL基本操作之创建数据库-CSDN博客 创建表:MySQL基本操作之创建数据表-CSDN博客 目录 常规查询常用函数union查询一、常规查询 1、查询所有姓名以 "张" 开头的学生: SELECT * FROM student WHERE name LIKE 张%; 这条语句使用 LIKE 运算…

Linux磁盘扩容(加硬盘法)

目录 ​编辑 1、虚拟机操作 2、查看当前分区 3、更新并重启虚拟机 4、对新磁盘分区 5、对新分区进行格式化 6、进行文件系统扩展 1、虚拟机操作 点击添加 2、查看当前分区 fdisk -l3、更新并重启虚拟机 shutdown -r now 然后虚拟机会重启 在此查看当前分区 fdisk -l…

Pycharm设置项目的python环境与界面上terminal的shell运行环境

1、首先打开左上角的file–>settings 2、设置项目运行环境如下所示: 3、设置ternimal的shell执行环境如下所示:

【试题000】C语言整型常量求平方根Sqrt函数

题目&#xff1a;设float x9&#xff0c;y2;&#xff0c;表达式(int) (sqrt (x) /y) 的值是&#xff1f; 代码解析&#xff1a;↓ #include <studio.h> #include <math.h> void main() {float x 9, y 2;printf("%d\n", (int)(sqrt(x) / y));//结果1/…

【解锁未来】探索Web3的无限可能性-01

文章目录 前言什么是Web3&#xff1f; 前言 还记得你第一次听说比特币吗&#xff1f;也许那只是一个关于新技术将改变一切的微弱嗡嗡声。也许你会有一种 "FOMO "的感觉&#xff0c;因为那些早早入场的人突然积累了一大笔财富–尽管你并不清楚这些 "钱 "可…

解决windows10、windows11故障:Microsoft-Windows-Kernel-Processor-Power 事件ID:37

一、现象 windows系统日志中出现大量的“Microsoft-Windows-Kernel-Processor-Power”错误。 经过分析&#xff1a;原因是windows配置的【使用电池】默认值是5%&#xff0c;按5%计算出来的功率与CPU的最小功率不兼容&#xff0c;如&#xff1a;本机CPU最高功率是25W&#xff0…

【Linux】文件IO基础知识——下篇, 什么是软硬链接?如何用别人的动静态库??

目录 一&#xff0c;stderr 2. errno全局变量 二&#xff0c;文件系统 1. 软链接 2. 硬链接 三&#xff0c;静态库 1. 制作静态库 2. 自动化生成静态库 & 自动发布库与头文件 3. 如何使用第三方库 法&#xff08;一&#xff09;&#xff1a;修改系统文件库 …