计算机指令

2.3-X86指令简介

痴心易碎 提交于 2019-12-03 11:50:06
  x86指令种类繁多,数量庞大, 在这一节我们将会学习x86指令的分类,并分析其中最为基础的一部分指令。 通常一个指令系统主要包括这几类指令。 运算指令,比如加、减、乘、除这样的算术运算,以及与、或、非这样的逻辑运算。 还有传送类指令,比如把数据从存储器送到通用寄存器,或者从通用寄存器送到I/O接口等等。 有了这两类指令,计算机就可以从外界获取数据, 并在内部完成运算,最后将结果输出到外界。但是如果你想编制比较复杂的程序,例如像高级语言当中if e lse这样的语句,或者是for while这样的循环语句, 那就需要用到转移类指令,另外还需要有一些对CPU进行控制的指令。 那无论是哪一类指令,我们首先要关心的就是它究竟改变了什么。 例如一条加法指令,它会改变通用寄存器的内容, 或者有可能改变标志位,再有是改变存储器单元的内容,或者改变外设端口的内容, 还有可能改变指令指针以及其他的情况。 那我们在学习到新的指令的时候,一定要认真地想清楚这条指令 究竟改变了哪些地方,又对后续的指令会产生什么样的影响。   现在我们就通过一个示例程序来讲解几个常用的指令。 这个程序的目的是进行两个数的求和运算, 这两个数比较大,可能有很多个字节,第一个数存放在2000H开始的 存储器空间中,第二个数存放在3000H开始的存储器空间中。 而且我们希望这个程序有一定的灵活性,可以适应不同长度的数。

2.1-设计自己的计算机

风格不统一 提交于 2019-12-03 11:35:25
  什么是指令系统体系结构呢? 要回答这个问题,其实非常的简单。但是想解释清楚, 也没有那么容易。我们还是从一个小故事开始吧。   有一天两个小伙伴碰了面,发现对方都很愁苦,一个就问另一个"嘿你在愁苦什么呀?" 这个说"唉呀,最近遇到了很多运算上的问题。" "运算量好大呀。"对方说,"可不是吗,我也遇到了类似的问题。" "咱们怎么解决呢?" "不如咱们一起设计一个计算机吧!" 就说好啊,两人就一拍即和。 "我们设计计算机怎么分工呢?"一个说,"我显然是软件程序员,我来编写如何运算的软件指令。" 另一个说"那正好,我是硬件工程师,我来设计计算机的硬件,主要是CPU,那咱们就分头工作吧!" "这事估计得花一年时间才能把CPU设计出来,也才能把软件 写好。真的就可以这么开始了吗?一年之后我们在碰面,怎么保证你写的软件就能在我做的CPU上运行起来呢?" "所以还不能着急,咱们得商量商量,得把咱们的共同规则订 好,然后呢才能分头去设计软件和硬件,这样保证之后我们在碰面的时候软件和硬件能顺利的结合在一起。" 那好,这两个小伙伴就开始商量了,他们要商量的是什么呢? 就是我们要谈的指令系统体系结构。   他们要面临的计算任务并不复杂,所以只要一个很简单的计算机指令系统就可以了。 我们要设计多少指令、要设计哪些指令,首先要根据需求来确定。 那看上去我们只需要一些简单的加法。所以首先

程序员需要了解的硬核知识之磁盘

亡梦爱人 提交于 2019-12-03 10:05:26
程序员需要了解的硬核知识之磁盘 https://www.cnblogs.com/cxuanBlog/p/11776310.html 此篇文章是 《程序员需要了解的硬核知识》系列第四篇,历史文章请戳 程序员需要了解的硬核知识之内存 程序员需要了解的硬核知识之CPU 程序员需要了解的硬核知识之二进制 我们大家知道,计算机的五大基础部件是 存储器 、 控制器 、 运算器 、 输入和输出设备 ,其中从存储功能的角度来看,可以把存储器分为 内存 和 磁盘 ,内存我们上面的文章已经介绍过了,那么此篇文章我们来介绍一下磁盘以及内存和磁盘的关系。 认识磁盘 首先,磁盘和内存都具有存储功能,它们都是存储设备。区别在于,内存是通过 电流 来实现存储;磁盘则是通过 磁记录技术 来实现存储。内存是一种高速,造假昂贵的存储设备;而磁盘则是速度较慢、造假低廉的存储设备;电脑断电后,内存中的数据会丢失,而磁盘中的数据可以长久保留。内存是属于 内部存储设备 ,硬盘是属于 外部存储设备 。一般在我们的计算机中,磁盘和内存是相互配合共同作业的。 一般内存指的就是主存(负责存储CPU中运行的程序和数据);早起的磁盘指的是软磁盘(soft disk,简称软盘),就是下面这个 (2000年的时候我曾经我姑姑家最早的计算机中见到过这个,当时还不知道这是啥,现在知道了。) 如今常用的磁盘是硬磁盘(hard disk,简称硬盘)

2019-2020 20191316《信息安全专业导论》第五周学习总结

此生再无相见时 提交于 2019-12-03 09:54:36
教材学习内容总结 这一周学习了各种指令格式,并在Pep/8上运行了小程序。知道了汇编语言。认识了伪代码,知道了如何测试程序 教材学习中的问题和解决过程 问题1:想多了解一下汇编语言及各种语言进化过程 解决方案:通过查资料我知道了早期的程序设计均使用机器语言。程序员们将用0, 1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。但由于用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍,而且,编出的程序全是些0和1的指令代码,直观性差,如果有错写也很难查找。所以汇编语言诞生了。汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。我们用汇编语言编写程序,但计算机只认识机器指令,这时候就需要一个能将汇编语言转换成机器指令的工具,就是编译器。程序员用汇编语言写出源代码,再用汇编编译器将其编译为机器码,最后由计算机执行。 汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为机器指令

2019-2020-1 20191315 《信息安全专业导论》第五周学习总结

拜拜、爱过 提交于 2019-12-03 09:49:15
教材学习内容总结 第六章新学习了计算机能够存储、检索和处理数据。用户可以把数据输人计算机,计算机能够显示数据,使用户看到它们。在最底层抽象中,给机器的指令直接反映了这5种操作。计算机的机器语言是一套机器的硬件能够识别并执行的指令。机器语言程序是-系列用二进制编写的指令。Pep/8 是一台具有寄存器A和两部分指令的虚拟机,一部分指令说明要执行的动作,另一部分指令说明了要使用的数据的位置。使用Pep/8指令集编写的程序可以使用模拟器运行。Pep/8汇编语言是种使用助记忆码而不是二进制数表示的指令。用汇编语言编写的程序将被翻译成等价的机器语言,然后用Pep/8模拟器执行。伪代码是人们为了表示算法而使用的一种便捷形式的语言, 允许用户命名变量(存放值的空间)、把数值输人变量以及输出存储在变量中的值。使用伪代码还可以描述重复执行或选择的动作的算法。在算法设计中,问问题和推迟细节是用到的两种解决问题的策略。与算法一样,程序也需要测试。代码覆盖测试法通过仔细检查程序的代码来决定程序的输人。数据覆盖测试法则通过考虑所有可能的输人值来决定程序的输人。 教材学习过程中遇到的问题及解决 问题一:在写伪代码的算法主要的策略是什么 问题一的解决过程:我们问了问题并推迟了细节。问向题是我们大多数人都熟悉的策略。推迟细节则是首先给任务-个名称, 然后再补充细节来完成这个任务。也就是说,我们首先用more

冯诺依曼结构和哈弗结构

匿名 (未验证) 提交于 2019-12-03 00:38:01
现代计算机,大部分都是基于冯诺依曼体系结构, 冯诺依曼的核心是:存储程序,顺序执行 。所以不管计算机如何发展,基本原理是相同的。计算机程序实际上是告诉计算机做什么。 (1)冯诺依曼体系结构有以下特点: 计算机处理的数据和指令一律用二进制数表示; 指令和数据不加区别混合存储在同一个存储器中; 顺序执行程序的每一条指令; 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 (2)冯诺依曼体系结构的计算机必须具有如下功能: 把需要的程序和数据送至计算机中; 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力; 能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力; 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作; 能够按照要求将处理结果输出给用 哈佛结构处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。 哈佛 结构是为了高速数据处理而采用的,因为可以同时读取指令和数据(分开存储的)。大大提高了数据吞吐率,缺点 是结构复杂 。通用微机指令 数据是混合存储的,结构上简单,成本低。假设是哈佛结构:你就得在电脑安装两块硬盘 ,一块装程序,一块装数据,内存装两根,一根储存指 令 和 , 一根存储数据 文章来源

【计算机系统结构】第2章 计算机指令集结构设计问答题

匿名 (未验证) 提交于 2019-12-03 00:27:02
1. 通常可按哪5个因素对计算机指令集结构进行分类? (1) 在CPU中操作数的存储方法。 (2) 指令中显式表示的操作数个数。 (3) 操作数的寻址方式。 (4) 指令集所提供的操作类型。 (5) 操作数的类型和大小。 2. 在对计算机指令集结构进行分类的5个因素中,哪一种是各种指令集结构之间最主要的区别? CPU中操作数的存储方法,即在CPU中用来存储操作数的存储单元的类型,是各种指令集结构之间最主要的区别。 3. 根据CPU内部存储单元类型,可将指令集结构分为哪几类? 堆栈型指令集结构、累加器型指令集结构、通用寄存器型指令集结构。 4. 堆栈型指令集结构、累加器型指令集结构和通用寄存器型指令集结构分别有什么优缺点? 指令集结构类型 优点 缺点 堆栈型 是一种表示计算的简单模型;指令短小 不能随机访问堆栈,从而很难生成有效代码。同时,由于堆栈是瓶颈,所以很难被高效地实现 累加器型 减少了机器的内部状态;指令短小 由于累加器是唯一的暂存器,这种机器的存储器通信开销最大 寄存器型 易于生成高效的目标代码 所有操作数均需命名,且要显式表示,因而指令比较长 5. 现代 大多数机器均采用通用寄存器型指令集结构,为什么? 主要有两个方面的原因,一是寄存器和CPU内部其他存储单元一样,要比存储器快;其次是对编译器而言,可以更加容易、有效地分配和使用寄存器。 6.

【计算机系统结构】第3章 流水线技术问答题

匿名 (未验证) 提交于 2019-12-03 00:27:02
1. 流水技术有哪些特点? (1)流水过程由多个相联系的子过程组成,每个过程称为流水线的“级”或“段”。 (2)每个子过程由专用的功能段实现。 (3)各个功能段所需时间应尽量相等。 (4)流水线需要有“通过时间”,在此之后流水过程才进入稳定工作状态,每一个时钟周期(拍)流出一个结果。 (5)流水技术适合于大量重复的时序过程,只有在输入端能连续地提供任务,流水线的效率才能充分发挥。 2. 按照流水线所完成的功能来分,流水线可分为哪两类? (1)单功能流水线:只能完成一种固定功能的流水线。 (2)多功能流水线:流水线的各段可以进行不同的连接,从而使流水线在不同的时间,或者在同一时间完成不同的功能。 3. 按照同一时间内各段之间的连接方式来分,流水线可分为哪两类? (1)静态流水线:在同一时间内,流水线的各段只能按同一种功能的连接方式工作。 (2)动态流水线:在同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。 4. 按照流水的级别来分,流水线可分为哪三类? (1)部件级流水线(运算操作流水线):把处理机的算术逻辑部件分段,以便为各种数据类型进行流水操作。 (2)处理机级流水线(指令流水线):把解释指令的过程按照流水方式处理。 (3)处理机间流水线(宏流水线):由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。 5. 按照数据表示来分

Docker容器的Tengine实践

匿名 (未验证) 提交于 2019-12-03 00:15:02
作为目前最火的应用, Docker 确实存在着其独到之处,无论是程序猿还是运维都应该听说过 Docker 的大名,Docker 已经走过了许多的坑,应该说是完全能承载开发使用和运维监控,这款工具能帮助我们高效的打包、发布和运行承载着应用程序的容器系统。而且收集日志、帮助 App 的快速开发都有很大作用。 容器和虚拟机,经常是被拿出来对比的两款产品,实际上两者有着根本的差别,虚拟机是完全模拟了一台真实计算机,在上面运行的系统可能或者不可能知道自己运行在虚拟化环境下,并且虚拟机承载了将用户指令转换为特权指令的功能,所以虚拟机非常复杂,但是很完备,而 Docker 则完全不同。Docker 使用主机自身的 Linux 内核,然后从镜像中产生磁盘目录和软件,所有的进程都运行在主机上,如果有兴趣的话完全可以 ps aux 查询一下,就能发现在 Docker 中运行的进程,只不过 Docker 对其做了如同 chroot 差不多概念的封装。 Docker 真正用法 在 Docker 发展的早期,由于 busybox 等轻量化镜像不完备,所以各大发行版的缩减瘦身镜像得到了更多的使用,特别是由于 Docker 本身是在 Ubuntu 环境下开发的,所以 Ubuntu 和 Debian 在很多镜像中作为基镜像,以此作为基础产生目标镜像。但是随着在实践中的使用,其弊端也暴露出来了,就是太过于重量化

计算机硬件基础知识

◇◆丶佛笑我妖孽 提交于 2019-12-03 00:02:02
2.1 计算机硬件基础知识   2.1.1 计算机系统的组成、体系结构分类及特性       CPU和存储器的组成、性能和基本工作原理     CISC/RISC,流水线操作,多处理机,并行处理     常用 I/O 设备、通信设备的性能以及基本工作原理     I/O 接口的功能、类型和特性     I/O控制方式(中断系统、DMA、I/O处理机方式)   2.1.2 存储系统     虚拟存储器基本工作原理,多级存储体系     RAID 类型和特性   2.1.3 可靠性与系统性能评测基础知识     诊断与容错     系统可靠性分析评价     计算机系统性能评测方法      计算机体系结构分类 :     从 宏观 上按 处理机数量 进行分类,分为单处理系统、并行处理与多处理系统和分布式处理系统。     从 微观 上按 并行程度 分类:最为常见分类方式有:Flynn分类法与冯氏分类法。考试中主要考察的是Flynn分类法。        Flynn分类法 是根据指令流、数据流和多倍性三方面来进行分类的:                计算机硬件组成 :     计算机硬件系统是依照冯·诺依曼所设计体系结构,即包括 运算器 、 控制器 、 存储器 、 输入设备 和 输出设备 五大部件组成。     运算器和控制器组成中央处理器(CPU)      运算器 负责完成算术