1.2计算机系统的层次结构

news2024/11/24 0:38:21

文章目录

  • (1)微指令
  • (2)汇编语言
  • (3)高级语言
  • (4)操作系统
  • (5)编译程序与解释程序
  • (6)总结

请先食用这一篇 计算机工作过程

(1)微指令

前边我们了解到,高级语言编写的代码,最终需要翻译成机器语言,才能被CPU执行。

传统意义上的机器,只能识别机器语言,机器语言就是用二进制表述的指令。

CPU在执行这些用二进制表示的机器指令的时候,还需要把这些指令细分为很多小步骤。这些细分的小步骤可以被成为微指令或者微操作。

之前我们看过的这个例子:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NPaZ8WL2-1673508626621)(D:\Typora图片\image-20230112140114352.png)]

第一条取数指令(就是图示的二进制指令)需要被划分为9个更加细分的操作。(就是图片左边的9个操作)

这9个指令就是微指令,依次执行才能完成取数操作。

微程序机器可以看作传统机器的分解。

用微程序机器的微指令来解释并且执行M1这个传统机器的每一条机器指令。

如图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TJeA2T0U-1673508626622)(D:\Typora图片\image-20230112140503008.png)]

(2)汇编语言

由于传统机器只能识别二进制指令,用这种二进制指令来编程是非常不方便的。

20世纪50年代,开始出现符号式的程序设计语言–汇编语言。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-io72tgfp-1673508626623)(D:\Typora图片\image-20230112141819008.png)]

虚拟:任何一台机器,都不可能识别汇编语言。用汇编语言编写的程序想要执行,必须通过汇编程序翻译成机器语言。用汇编语言编程的程序员,在他看来,这台机器可以直接识别汇编语言。但这只是看起来,实际上是需要翻译成机器语言的。

汇编语言指令和机器语言指令一一对应!

结合之前给出的例子来看。

第一个操作码(000001)指明这是一个取数指令,地址码部分(0000000101–>5)指向5号单元。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A2tUV6gP-1673508626624)(D:\Typora图片\image-20230112141504560.png)]

所以我们这里给出的汇编语言代码,LOAD说明是取数操作,5说明了要从地址单元为5的

地方取数。和下面机器指令的两个部分一一对应。

如图:在这里插入图片描述

第二条乘法指令也是类似,MUL指明这是一条乘法指令,6说明了要与地址单元为6的那个数进行相乘。

所以,汇编语言编写的程序只是更方便我们理解而已,本质上和机器指令没有太大区别。还是属于低级语言。

(3)高级语言

经过以上分析,用汇编语言编写程序也是非常不方便的。

随着计算机的发展,慢慢出现了高级语言,现在我们编程大多用的是高级语言。比如C、Java。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VHFjpwrO-1673508626625)(D:\Typora图片\image-20230112142913648.png)]

但是并没有任何一台机器可以直接识别高级语言代码,需要通过编译程序翻译成汇编语言,再经过汇编程序翻译成机器语言。

(4)操作系统

我们编写的程序,难免会用到操作系统提供的一些服务,比如某些系统调用。

所以一般来说,用汇编语言编写的程序,通常也需要请求操作系统的服务。通过系统调用的方式来请求,系统调用又可以称为“广义指令”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7j9D6NC-1673508626626)(D:\Typora图片\image-20230112143221476.png)]

操作系统和操作系统之上的部分,可以划分为软件,下方传统机器和微指令部分可以划分为硬件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gMQuwrMf-1673508626626)(D:\Typora图片\image-20230112143744212.png)]

显然,《计算机组成原理》这个课程,关注的是硬件部分。

(5)编译程序与解释程序

用高级语言编写的源程序,需要编译程序翻译为汇编语言(助记符:方便人们记忆的符号,本质上和机器语言一一对应),然后通过汇编程序翻译为机器语言程序。机器语言程序才是让CPU执行的程序。

如果程序里面,调用了其他的库函数,那么在汇编之后,还需要再经过链接的操作,也就是将你的程序以及调用的其他程序链接起来,这是《操作系统》研究的东西。这门课,主要关注语言的逐步转换。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kdNmiqiS-1673508626627)(D:\Typora图片\image-20230112145416674.png)]

实际上,还有一些语言,经过编译程序的编译之后,可以直接由源程序转换为机器语言程序。(图中绿色箭头)

还有一些高级语言代码的执行,并不是通过编译程序,而是通过解释程序(解释器),把高级语言代码翻译成与之对等的机器语言指令。很多脚本类的语言都是采用这样的机制。(图中红色箭头)


📑区别

编译程序

直接把高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需要翻译一次)。

比如用C语言写的程序,通过编译、汇编之后,最终形成.exe文件。这个文件其实就是用机器语言描述的程序。只要生成了.exe文件,之后就不用再编译了,只需要加载这个文件即可。

解释程序

将源程序的一条语句翻译成对应于机器语言的语句,并立即执行,紧接着再翻译下一句(每次执行都要翻译)。

比如用JavaScript脚本语言写了几句代码,在执行的时候,每执行一句,都会丢给解释程序,让它帮我们将代码翻译成与之对等的机器语言。翻译一句之后,立即执行,然后翻译下一句。

明显,编译程序的效率更高。

像C、Java这类语言可以称为编译型语言,而JavaScript、Python这类语言可以称为解释型语言。

编译、汇编、解释程序,可以统称为“翻译程序”。

(6)总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kQfbnVS2-1673508626627)(D:\Typora图片\image-20230112151003611.png)]

最后,再来看一下这两个概念的理解。

计算机体系结构:必须要探讨的是指令系统应该怎么设计。也就是我设计的这一台计算机,要对上层的机器语言程序提供哪一些指令。比如有没有乘法指令。如果不给这台机器提供乘法指令,那么使用这一台机器的程序员想要实现乘法操作,只能将数一个一个加起来。

计算机组成原理:如果我要给上层提供乘法指令,这个乘法指令如何用硬件来实现。

在这里插入图片描述


感谢王道,不懂的可以去B站搜视频,这里我只是总结出来了。希望能够帮到你。
整理不容易,多多支持~
请添加图片描述

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

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

相关文章

考研《数据结构》线性表—顺序表练习题

2.设计一个高效算法&#xff0c;将顺序表L的所有元素逆置&#xff0c;要求算法的空间复杂度为0&#xff08;1&#xff09;。 思路&#xff1a;扫描顺序表L的前半部分元素&#xff0c;对于元素L.data[i]与L.data[len-1-i]对换。 #include<iostream> using namespace std…

XCTF:NewsCenter

一道简单的常规注入题&#xff0c;就当练练手了 尝试’ 直接网页异常&#xff0c;尝试进行闭合# 网页恢复正常&#xff0c;证明SQL语句通过单引号进行闭合&#xff0c;则为字符型注入 直接判断字段数&#xff0c;order by n order by 3#回显正常&#xff0c;order by 4#网页异…

kaggle平台学习复习笔记 | 数据划分与模型集成

目录数据集划分与交叉验证模型集成方法Titanic为例的简单应用kaggle比赛相关tips数据集划分与交叉验证 数据集划分 通常有两种方法&#xff1a; 留出法(Hold-out) 适用于数据量大的情况K折交叉验证(K-fold CV) 适用于数据量一般情况 时间比较长自助采样(Bootstrap) 较少使用 …

Lua C接口编程(二)

引言 上篇文章我们学习了C如何调用Lua&#xff0c;今天我们就来聊聊Lua 如何调用C。 Lua版本&#xff1a;Lua 5.3.5 对于Lua提供的接口有不清楚的&#xff0c;可以参考Lua接口官方文档 一、Lua调用C步骤 需要将C文件编译成动态库在Lua文件中使用package.cpath配置C动态库路…

Linux学习笔记——分布式内存计算Spark安装部署

5.12、分布式内存计算Spark环境部署 5.12.1、简介 Spark是一款分布式内存计算引擎&#xff0c;可以支撑海量数据的分布式计算。 Spark在大数据体系是明星产品&#xff0c;作为最新一代的总和计算引擎&#xff0c;支持离线计算和实时计算。 在大数据领域广泛应用&#xff0c…

虚拟化技术考试重点总结

虚拟化技术考试重点总结 什么是虚拟化&#xff1f;其作用是什么 ​ 虚拟化&#xff0c;是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。可以在一台计算机上同时运行多个逻辑计算机&#xff0c;每个逻辑计算机可运行不同的操作系统&#xff0c;并且应用程序都可以在相互…

Golang中http编程

http介绍 编写web语言&#xff1a; 1.java 2.php&#xff0c;现在都在尝试用go语言编写 3.python&#xff0c;豆瓣 4.go语言 》 beego&#xff0c;gin两个主流的web框架 https协议&#xff1a;我们使用浏览器访问的时候发送的就是http请求 http是应用层的协议&#xff0c;底…

论文投稿指南——中文核心期刊推荐(地质学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

广告业务系统 之 辅助决策 —— “ AB 实验平台”

文章目录广告业务系统 之 辅助决策 —— “ AB 实验平台”AB 实验平台流量侧 & 渲染侧AB 实验模块架构设计智能流控广告业务系统 之 辅助决策 —— “ AB 实验平台” AB 实验平台 在广告业务中&#xff0c;数据通常作为业务前进的内在驱动力之一。 AB 实验平台就是以实验…

java获取时间并进行计算

前言 SimpleDateFormat使用介绍 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、SimpleDateFormat是什么&#xff1f; 如果你对java源码比较了解。你会发现java对文字&#xff0c;数字的格式化&#xff0c;是有一个公共的父类的Format。 NumberFo…

.Net Core6.0程序发布到IIS支持apk文件下载

ASP.Net Core6.0 WebApi程序发布到IIS支持apk/wgt文件下载 IIS中配置MIME 添加.apk/.wgtapplication/vnd.android.package-archive或application/octet-stream.Net Core6.0 WebApi 程序要在startup.cs中设置 //使用默认文件 app.UseDefaultFiles(); //开启静态文件 app.UseS…

金山区企业工程技术研究中心给予15万元资金奖励

金山区企业工程技术研究中心一、主管部门金山区科学技术委员会二、政策依据《金山区关于进一步鼓励科技创新加快上海科技创新中心重要承载区建设的若干配套政策》&#xff08;金府发〔2020〕3号&#xff09;《金山区关于进一步鼓励科技创新加快上海科技创新中心重要承载区建设的…

赛题发布|“星河杯”隐私计算大赛-赛题发布沙龙成功举办

2023年1月10日下午&#xff0c;由中国信通院与隐私计算联盟主办&#xff0c;中移动信息技术有限公司、联通数字科技有限公司、天翼电子商务有限公司共同协办&#xff0c;FATE开源社区提供技术支持&#xff0c;DataFountain作为官方竞赛平台的“星河杯”隐私计算大赛顺利举办赛题…

Acwing---1212.地宫取宝

地宫取宝1.题目2.基本思想3.代码实现1.题目 X 国王有一个地宫宝库&#xff0c;是 nm 个格子的矩阵&#xff0c;每个格子放一件宝贝&#xff0c;每个宝贝贴着价值标签。 地宫的入口在左上角&#xff0c;出口在右下角。 小明被带到地宫的入口&#xff0c;国王要求他只能向右或…

SAP入门技术分享三:模块化程序

模块化程序1.子程序概要2.子程序定义3.子程序参数&#xff08;1&#xff09;传递参数的方法&#xff08;2&#xff09;定义参数类型&#xff08;3&#xff09;参数与结构体&#xff08;4&#xff09;参数与内表4.调用子程序&#xff08;1&#xff09;调用程序内部子程序&#x…

Android APP 缓存路径

Context.getCacheDir():这个缓存路径打印出来的是&#xff1a;data / data / (APPID ) / cacheAndroid系统中的清除APP缓存清除的就是这个路径: 随着用户手动清空缓存或者APP的卸载&#xff0c;这个路径的缓存也会被删除。请注意&#xff1a;在这个缓存路径上读写是不需要请求文…

Qt扫盲-信号槽理论总结

信号槽理论总结一、概述二、信号槽三、信号四、槽函数五、小例子六、 信号槽的默认参数七、高级使用八、 在Qt 里使用第三方的信号槽一、概述 信号和槽用于对象之间的通信。信号和槽机制是Qt的一个核心特性&#xff0c;也是与其他框架所提供的特性最大不同的部分。Qt的元对象系…

win10跨网段文件共享

win10跨网段文件共享问题描述问题分析网络可达性防火墙权限问题操作网络拓扑示意图操作步骤问题描述 平常&#xff0c;我们经常用的是同一局域网下的网络共享&#xff0c;这在windows上很容易操作。现在&#xff0c;两台PC主机不在同一子网&#xff0c;该如何共享&#xff1f;…

【C/C++】静态顺序表详解(附完整源码)

本章内容 1.什么是线性表 2.什么是顺序表 3.静态顺序表结构的定义 4.静态顺序表的函数接口实现 5.静态顺序表的问题及思考 1.什么是线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&…

开源飞控初探(四)ArduPilot::Copter固件源码分析

2022.5.7&#xff0c;基于v4.0.5的分析。官网文档没及时更新&#xff0c;本文对当前版本源码的描述可能和官网不一样。1、无人机全栈分层结构图2、Flight Code固件部分上图中的Flight Code层&#xff0c;分为5个部分&#xff1a;车机层。一份代码通过编译配置&#xff0c;可以支…