计算机指令

深入理解计算机系统(3.4)------算术和逻辑操作

拟墨画扇 提交于 2020-01-10 01:50:15
  上一篇博客 我们介绍了几种数据传送指令,包括MOV,MOVS,MOVZ,PUSH和POP等,理解起来也不算难。本篇博客我们来接着看汇编语言的算术与逻辑运算指令,算术无非就是加减乘除,而逻辑运算也就是与或非,移位等操作。下面这张图是汇编里面的算术和逻辑操作:      上面除了 leal(加载有效地址)指令通常用来执行简单的算术操作,其余的指令都是标准的一元或者二元操作,下面我们分别来介绍这几个指令操作。 1、leal 指令   leal 指令也称为加载有效地址(load effective address)指令,它实际上是 movl 指令的变形。它的指令形式是从存储器读数据到寄存器,但实际上它根本没有引用存储器。   它的第一个操作数看上去是一个存储器引用,但该指令并不是从指定的位置读取数据,而是将有效地址写入到目的操作数,类似于 C 语言的取地址操作符“&”。另外就是作普通的算术运算。   leal 立即数,寄存器   这类指令就是将立即数装载至寄存器,比如 leal $0x01,%eax 这种情况下 和 movl $0x01,%eax 的效果是等价的    leal 地址,寄存器   leal指令的作用是将地址加载到寄存器,对于leal S,D而言,就是实现了 &S –> D 的功能    leal S, D 结果是&S -> D   movl S,D 结果是S -> D

深入理解计算机系统(3.4)---算数与逻辑运算指令详解

耗尽温柔 提交于 2020-01-10 01:49:14
引言   上一章我们已经着重讨论了数据传送(或者说复制)指令,相信各位猿友现在都已经对此有一些了解了。说真的,LZ在看第三章的过程中,不断的被汇编的魅力深深的震撼,这些看似简单的汇编指令,却可以将复杂的程序井然有序的执行完毕,实在是让人惊叹。时至今日, 这本看似枯燥无比却实则魅力十足的书,已经深深的将LZ吸引了。   希望各位猿友也有这样的感觉,这是一种非常好的感觉,接下来,各位就一起和LZ来认识认识新的指令吧。 算术与逻辑运算指令   算术与逻辑运算包括很多种,估计各位猿友也能很快的想出来,比如最常见的加减乘除、与或非、左移右移等等。这里可能还有一个各位猿友不太容易想到的,就是取地址运算符,不过这个运算指令却是LZ看过这一部分之后,觉得最精妙的一个指令。   接下来LZ将书中的一个表格贴上来,各位猿友可以先大致浏览下里面的指令。   这里面比较特别的指令就是leal(取地址指令),其余的指令都是比较常规的算术和逻辑运算,相比之下还比较好理解,因此LZ这里重点介绍leal指令,对于其余的指令LZ不会一一介绍,接下来我们就认识一下这个特别的leal指令吧。 leal指令   leal指令是非常神奇的一个指令,它可以取一个存储器操作数的地址,并且将其赋给目的操作数。如果用C语言当中来对应的话,它就相当于&运算。   比如对于leal 4(%edx,%edx,4),%eax这条指令来讲

计算机原理简述-处理器和汇编

吃可爱长大的小学妹 提交于 2020-01-10 01:44:49
  构成计算机的硬件系统通常有“五大件”组成:输入设备、输出设备、存储器、运算器和控制器。   简单来说,对于计算机,核心的组成就是CPU。从计算机产生到现在,其核心的作用一直都是计算、计算、计算。进行各种的数据运算。   CPU属于计算机的硬件部分,这里就涉及到了电子的东西,也就是数字电路,简单来说就是把电路给数据话。这里又区分有电,没电两种状态。这就是通常所说的高电阻、低电阻。在计算机中,把有电设为1,没电设为0。因此可以说,硬件只会识别0和1。个人猜测这大概就是二进制的由来。   举个栗子,一个简单的CPU,对输入的数据进行++运算的一个CPU,假设它四条电路,两条作为输入,两条作为输出。则根据上文提到的有无电对应1和0,可做出以下推测,当我输入00(输入口两电路均无电)则输出01,输入01则输出10,同理输入10输出11。   同时,1和0,可组成00 01 10 11,即可表示4种状态,当然一个CPU不可能只有4个角。通常我们说的CPU32位或者64位,说的就是这个CPU的输入范围的宽度,在CPU四周,有各种角,这一个角就叫做CPU的一位,bit。通常我们把8个一位称之为一个字节,也就是byte。   还是上面那个例子,两个输入口,都是用来输入数据的,这个在计算机中的术语叫做Databus,数据总线。当CPU变的再为复杂点的时候,比如不仅仅是加1操作,我还想做减1操作

初步了解CPU

自闭症网瘾萝莉.ら 提交于 2020-01-09 17:02:34
了解CPU By JackKing_defier 首先说明一下,本文内容主要是简单说明CPU的大致原理,所需要的前提知识我会提出,但是由于篇幅我不会再详细讲解需要的其他基础知识。默认学过工科基础课。 一、总述 先从计算机的结构说起,在现代计算机中,CPU是核心,常常被比喻为人的大脑。现在的计算机都为“冯·诺依曼机”, “冯诺依曼机” 的一个显著的特点就是由运算器、存储器、控制器、输入设备和输出设备组成。 CPU是运算器和控制器合起来的统称 ,因为运算器和控制器在逻辑关系和电路结构上联系十分紧密,尤其在大规模集成电路制作工艺出现之后,所以这两个部件就集成在同一芯片上。 了解CPU怎么工作就转化为了解运算器和控制器的作用和功能。 二、CPU的运算 运算器由ALU(算术逻辑单元)和若干通用寄存器组成。 //寄存器需要数字逻辑知识 ALU即为一个芯片,有相应的输入,会给出相应的输出,由逻辑运算功能表可确定不同针脚会有的相应的运算输出。//这里可以类比于数字逻辑中的74LS138芯片,只不过74181给出的是相应输入的运算结果。 在这里我想到,很多同学并没有学习过数字逻辑这门课,简单介绍一下。我们高中物理就学过“与门”、“或门”和“非门”,也就是通过电路可以实现逻辑上的“与”、“或”和“非”运算。同时呢,有一个门叫做“与非门”,也就是A和B先做与运算,再做非运算取反

在复杂模型机上编写机器指令与微程序计算海伦公式——计算机组成原理课程设计

元气小坏坏 提交于 2020-01-09 03:59:26
文章目录 一、实验内容 1. 实验目的 2. 实验目标 3.实验设备 二、实验原理 1)数据格式 2)指令设计 3)指令格式 4)指令系统 三、总体设计 四、实验步骤 1. 按图6连接实验线路,仔细检查连线后打开实验箱电源。 2. 写入实验程序,并进行校验。 3. 运行程序 五、实验结果 六、实验中遇到的问题与分析 一、实验内容 1. 实验目的 综合运用所学计算机组成原理知识,设计并实现较为完整的计算机。 2. 实验目标 在充分理解复杂模型机原理的基础上,自行编写机器指令及其对应的微程序,达到使用复杂模型机计算海伦公式的目标。 3.实验设备 PC机一台,TD-CMA实验系统一套。 二、实验原理 1)数据格式 此次使用的模型机规定采用定点补码表示法表示数据,字长为8位,8位全用来表示数据(最高位不表示符号),数值表示范围是:0≤X≤2 8 -1。 2)指令设计 根据海伦公式计算中所需要的指令,设计三大类模型机指令共十五条,其中包括运算类指令、控制转移类指令、数据传送类指令。 运算类指令包含三种运算,算术运算、逻辑运算和移位运算,设计有 6 条运算类指令,分别为:ADD、AND、DEC、SUB、OR、SAR,所有运算类指令都为单字节,寻址方式采用寄存器直接寻址。 控制转移类指令有三条 HLT、JMP、BZC,用以控制程序的分支和转移,其中HLT 为单字节指令,JMP和BZC为双字节指令

深入理解计算机系统——第二章学习笔记

别等时光非礼了梦想. 提交于 2020-01-09 00:14:45
2018-2019-1 20189224 《深入理解计算机系统》第二周学习总结 二进制信号能够容易的被表示、存储和传输。 主要研究三种数字表示:无符号编码——大于或等于0的数字;补码编码——有符号整数;浮点数——实数的科学计数法以2为基数的形式 计算机最小的可寻址内存单位:8位的块/字节 虚拟内存:机器级程序将内存视为一个大的字节数组 虚拟地址空间:所有可能地址的集合 虚拟地址以字为地址进行编码 计算机的字长:指明指针数据的标称大小 整数表示 补码转无符号编码 补码转二进制编码 补码转反码 补码转原码 有符号转无符号 无符号转有符号 整数运算 无符号加法 无符号求反 补码加法 补码的非 无符号乘法 补码乘法 上周测试 1.(B)就是位+上下文 A .数据 B .信息 C .知识 D .数据结构 解析:信息就是位+上下文:计算机系统中的所有信息都是由二进制串表示的,区分这些数据对象的唯一方法是读到这些数据的上下文。 2.Linux中,内核虚拟内存在虚拟地址空间的低端。(B) A .正确 B .错误 解析:p13 内核虚拟内存在虚拟地址空间的最顶端而不是最低端 3.实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作。(A) A .正确 B .错误 解析:p12 进程是操作系统对正在运行的程序的一种抽象。一个系统上可以同时运行多个进程,每个进程好像独占的使用硬件。所谓并发

第一周 ch01 课下测试

[亡魂溺海] 提交于 2020-01-09 00:08:51
1.Amdahl定律说明,我们对系统的某个部分做出重大改进,可以显著获得一个系统的加速比。(B) A .正确 B .错误 解析:Amdahl定律,该定律的主要思想是,当我们对系统的某个部分加速时,其对整个性能的影响取决于该部分的重要性和加速程度。 2.Linux中,内核虚拟内存在虚拟地址空间的低端。(B) A . 正确 B . 错误 解析:由上图可知内核虚拟内存在虚拟地址空间的最顶端而不是最低端 3.实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作。(A) A . 正确 B . 错误 解析:进程是操作系统对正在运行的程序的一种抽象。一个系统上可以同时运行多个进程,每个进程好像独占的使用硬件。所谓并发,是说一个进程的指令和另一个进程的指令交错执行。操作系统实现这种交错执行的机制称为上下文切换。操作系统跟踪进程运行所需的所有状态信息(也就是上下文),任何一个时刻,处理器只能运行一个进程。当操作系统决定要把控制权从当前进程转移到一个新进程时,就要进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权转交给新进程,新进程就从上次停止的地方开始执行。实现进程这个抽象概念需要低级硬件和操作系统软件之间的紧密合作 4.操作系统有两个基本功能:防止硬件被滥用;向应用供一致的机制来控制低级硬件设备。实现这两个功能相关的抽象有(ACD) A . 文件 B . 虚拟机 C

一定要你明白Java中的volatile

限于喜欢 提交于 2020-01-08 09:06:02
摘自: https://www.cnblogs.com/tonyY/p/12158856.html 一定要你明白Java中的volatile 2020-01-07 14:06 兔子托尼啊 阅读( 242) 评论( 0) 编辑 收藏 今天Tony来和大家聊聊Java中关键字 volatile 。 字节码 首先 volatile int a = 3; 和 int a = 3; , 加不加 volatile 关键字,最终生成的字节码都一样的。有兴趣的同学可以试试看看字节码是否一样。 英文解释 Adding volatile to the field does not change Java bytecode that reads or writes the field. It only changes the interpretation of the program by JVM or JIT compilation output if needed. It also influences optimizations. 中文理解 内存屏障的概念是针对CPU架构级别的,需要在JIT编译器生成机器码的时候才能看到。 java内存 讲讲java内存,在java内存中所有的变量都存在与主内存中,每个线程都有自己的工作内存。每个线程中的所用到的变量都是一个副本,都是从主内存中拷贝过来的。

volatile底层原理

独自空忆成欢 提交于 2020-01-07 17:41:37
前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。 本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,在此之前,有必要讲解一下CPU缓存的相关知识,掌握这部分知识一定会让我们更好地理解volatile的原理,从而更好、更正确地地使用volatile关键字。 CPU缓存 CPU缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾 ,因为CPU运算速度要比内存读写速度快得多,举个例子: 一次主内存的访问通常在几十到几百个时钟周期 一次L1高速缓存的读写只需要1~2个时钟周期 一次L2高速缓存的读写也只需要数十个时钟周期 这种访问速度的显著差异,导致CPU可能会花费很长时间等待数据到来或把数据写入内存。 基于此,现在CPU大多数情况下读写都不会直接访问内存(CPU都没有连接到内存的管脚),取而代之的是CPU缓存,CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小得多但是交换速度却比内存快得多。而缓存中的数据是内存中的一小部分数据,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可先从缓存中读取,从而加快读取速度。 按照读取顺序与CPU结合的紧密程度,CPU缓存可分为: 一级缓存:简称L1

嵌入式系统开发期末复习

▼魔方 西西 提交于 2020-01-07 06:24:09
一、简答题 1.什么是嵌入式系统?有什么特点?应用在哪些领域? 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。 特点:专用性,嵌入性,计算机系统。 应用领域:工业制造、过程控制、通信、仪器、仪表、汽车、轮船、航空等领域。 2.嵌入式系统组成?嵌入式处理器如何分类?典型的嵌入式处理器有哪些? 组成:嵌入式处理器、外围设备、嵌入式操作系统、应用软件等。 分类:嵌入式微处理器,嵌入式微控制器,嵌入式DSP处理器,SoC片上系统。 典型嵌入式处理器:arm,x86处理器,PowerPC处理器 3.操作系统概念,什么是EOS?常用的EOS有哪些? 嵌入式操作系统(EOS)是一种支持嵌入式系统应用的操作系统软件,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器。 常见的EOS:Linux,uLinux,WinCE等。 4.嵌入式系统开发主要步骤和流程 5.哈佛结构&&普林斯顿结构 哈佛结构是一种将程序中指令和数据分开存储的存储器结构,是一种并行存储体系结构。 普林斯顿结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构。 6.CISC&&RISC及特点对比 RISC(精简指令计算机)和CISC(复杂指令集计算机)是两种不同的CPU架构。 CISC