通用寄存器

2.6-MIPS指令简介

走远了吗. 提交于 2019-12-03 11:54:12
  MIPS秉承着指令数量少, 指令功能简单的设计理念,那这样的设计理念 是如何实现的呢?在这一节,我们就将来分析MIPS指令的特点。   相比于X86指令所提供的动辄上千页的指令说明,MIPS指令 只用这两页纸就可以说清楚了。MIPS指令的基本格式 就分为这三种,R型,I型和J型。R型指的是寄存器型, I型指的是立即数型,J型指的是转移型。 我们用这张表对MIPS的指令进行不同纬度的分类,横轴是按照指令的格式 分为R型、I型和J型,纵轴则是根据指令的功能类型分为运算指令、 访存指令和分支指令。首先,我们来看指令格式为R型的运算指令。 R型指令总共包含六个域,其中最高位的opcode域 是六个比特,最低位的funct域也是六个比特, 中间的四个域,均为五个比特,我们分别来看各个域的用途。 opcode域,用于指定指令的类型,对于所有的R型指令,这个域的值,均为零, 但这并不是说明R型指令只有一种,它还需要用funct域来更为精确的指定指令的类型。所以说,对 于R型指令,实际上一共有12个比特操作码, 那大家可以思考一下,为什么不将opcode域和funct域合并成一个12比特的域呢? 那样岂不是更直观明了吗?我们再来看这些5比特的域。 RS域,这个域通常用来指定第一个源操作数所在的寄存器编号, rt域通常用来指定第二个源操作数所在的寄存器的编号,

2.5-MIPS体系结构

左心房为你撑大大i 提交于 2019-12-03 11:53:27
  MIPS是精简指令系统的代表,采用了与X86相反的设计理念,并引领了精简指令系统的潮流, 那就让我们一起来看一看这究竟是怎么一回事。R ISC是精简指令系统计算机的简称,与之相对,之前的计算机上的指令系统就被称为 复杂指令系统,X86就是其中的代表。 现在MIPS处理器已经不再应用在计算机产品中了, 但是在广义的计算设备包括数字电视,游戏机,网络设备 等领域仍然有广泛的应用。   第一代的MIPS是32位的,在1985年推出了对应的处理器,R2000,90年, R3000处理器对应着第二代的MIPS,92年,MIPS扩展到了64位,94年,64位的MIPS又 进一步升级,96年的MIPS5并没有对应的处理器, 然后在99年,MIPS指令系统进行了较大的调整,形成了MIPS32,到了99年,以MIPS5为基础, 推出了MIPS64指令系统,MIPS的设计指导思想非常的简单, 从它的名字就可以看出来。MIPS全称的含义是一个流水线不会互锁的微处理器,流水线是 现代微处理器为提高性能而采用的一项技术,而流水线中的互锁 则是导致流水线性能降低的一个非常重要的因素。从这个名称也可以看出,MIPS的 指导思想是希望其指令的设计能让微处理器运行的更快,性能更好。 所以它主要的关注点是减少指令的类型,并且降低指令的复杂度,所以在MIPS指令系统当中, 指令的总数是很少的。

2.3-X86指令简介

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

linux-20191104

萝らか妹 提交于 2019-12-03 11:11:15
linux文件的索引节点至少提供POSIX标准下指定的如下属性: 1、文件类型 2、与文件相关的硬链接个数 3、以字节为单位的文件长度 4、设备标识符 5、在文件系统中标识文件的索引节点号 6、文件拥有者的UID 7、文件的用户组ID 8、几个时间戳,标识索引节点状态改变的时间、最后访问时间以及最后修改时间 9、访问权限和文件模式 当内核暂停一个进程的执行时,就把几个相关处理器寄存器的内容保存在进程描述符中,这些寄存器包括: 1、程序计数器(PC,指向下一条将要执行的指令)和栈指针(SP)寄存器 2、通用寄存器 3、浮点寄存器 4、包含CUP状态信息信息的处理器控制寄存器(处理器状态字,Processor Status Word) 5、用来跟踪进程对RAM访问的内存管理寄存器 内核分配给进程的虚拟地址空间由以下内存区组成: 1、程序的可执行代码 2、程序的初始化代码 3、程序的未初始化代码 4、初始程序栈(即用户态栈) 5、所需共享库的可执行代码和数据 6、堆(程序动态请求的内存) 来源: https://www.cnblogs.com/open1024/p/11792905.html

开发板基本概念

你离开我真会死。 提交于 2019-12-03 08:08:31
一、GPIO   GPIO(英语:General-purpose input/output),通用型之输入输出的简称,功能类似 8051 的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入( GPI )或通用输出( GPO )或通用输入与输出( GPIO ),如当clk generator, chip select等。 既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们 来源: https://www.cnblogs.com/leolzi/p/11784515.html

寄存器入门

匿名 (未验证) 提交于 2019-12-03 00:27:02
寄存器是cpu的组成部件之一,cpu在进行计算时,因为速度太快的原因,无法与内存(DRAM)直接进行操作。所以需要将所需的数据先从内存中提取到寄存器中,在对寄存器进行操作。 为了缓解DRAM与cpu的速度差,计算机在cpu与DRAM之间还有一个cache组件(SRAM),从内存中取出数据到寄存器中需要一个cpu指令周期,但如果预先放在cache中的话便可以直接使用,大大节约了取到数据的时间。 从8086这一代cpu开始,intel进入了x86时代,由于最早出现的8086是16位的cpu,寄存器能存储的位数也为16位,例如我们熟悉的AX,BX,CX,DX寄存器。 从i386这一代cpu开始,32位处理器开始进入市场,这个时候寄存器也升至32位,除了包含先前16位所有的寄存器外,还把通用寄存器、指令寄存器和标志寄存器从16位扩充成32位,并增加了2个16位段寄存器FS和GS。 之后的64位x86-64也是对x86架构的扩展。 这里以32位cpu的寄存器为例 在32位cpu中有: 4个数据寄存器(EAX、EBX、ECX、EDX) 2个变址和指针寄存器(ESI、EDI) 2个指针寄存器(ESP、EBP) 6个段寄存器(ES、CS、SS、FS、GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 主要用于保存操作数和运算结果等信息。 PS:在16位cpu中,AX,BX,CX

【计算机系统结构】第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.

1.5-计算机执行指令的过程

隐身守侯 提交于 2019-12-02 23:48:40
  执行指令是计算机过程的核心, 理解了指令如何执行呢,也就把握住了计算机运行原理的关键。 在这一节,我们就一起来看这个模型机是如何执行指令的。   现在我们已经有了这样一个模型 而且我们也知道了计算机执行一条指令的主要步骤包括取指、译码、执行、回写。 那我们就像在这个模型机上尝试执行一条计算机的指令。 这里给出了一个例子,我们想执行的这条指令是ADD R0, [6],这样的一个指令格式代表什么含义呢?从外边,我应该能看出来这是一条加法指令。 那么这个加法应该有两个源操作数,其中一个就是通用寄存器R0的内容; 另一个[6],中括号就代表是存储单元的内容。 那么,中括号里面带一个6说明是地址为6的存储单元的内容。 我们把这两个原操作数相加,就可以得到一个运算结果。 那么,在我们这种格式指令当中,默认第一个操作数即是源操作数又是目的操作数。 这个运算结果就会更新到通用寄存器R0中。   现在我们就来看这条指令是如何在模型机上执行的。 假设模型机的当前状态已经有了一些初始值, 我们需要注意的是CPU中的R0 所保存的值是00000011,这等于10进制的3。 而存储单元地址为6的存储单元的内容是00000010, 相当于10进制的2。 那么我们所要做的,就是把这个存储单元的数和R0当中的数相加,最后再放到R0中。 我们还看到PC寄存器也就是指向下一条指令地址的寄存器,保存的值是 0001

汇编学习--第一天

匿名 (未验证) 提交于 2019-12-02 23:43:01
背景:这本书之前看了大部分,但要批评自己心急了,看了之后实验没做,收获很少,所以决定重新学一遍,记录和分享我在每一章的收获(主要记录实操)。 第一章 基础知识 汇编组成:汇编指令,伪指令,其他符号。 一个存储单元(byte)可以储存8个bit,即8位二进制 最终运行汇编程序的是CPU 第二章 寄存器 8806CPU寄存器:16位,可存放两个字节,14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。 通用寄存器:AX,BX,CX,DX 通用寄存器可分为两个独立8位寄存器使用: AX -->AH + AL BX-->BH + BL CX-->CH + CL DX-->DH + DL 8086一次可以处理以下两种尺寸的数据: 字节(byte):由8 bit组成,可以存于8位寄存器 字(bit):word,一个字由两个字节构成,两字分别为高位字节和低位字节 ;传送指令 mov ax,18 mov ax,bx ;增加指令 add ax,8 add ax,bx 问题2.1 指令 指令结束之后AX中的数据 指令结束之后BX中的数据 mov bx,2000H 6226H 2000H add ax,bx 8226H 2000H mov bx,ax 8226H 8226H add ax,bx 044CH 8226H 计算结果为1044CH

《深入理解计算机系统》阅读笔记--程序的机器级表示(上)

匿名 (未验证) 提交于 2019-12-02 21:59:42
一、为什么要学习和了解汇编 编译器基于编程语言的规则,目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。GCC c语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序中的每一条指令。然后GCC调用汇编和链接器,根据汇编代码生成可执行的机器代码。这一章节其实就是来更加深入的认识和理解汇编代码 现在我们更多接触的都是一些高级语言,如JAVA,GO,Python,其实用这些语言的时候,更大程度上,已经屏蔽了一些程序的细节,即机器级的实现。但是如果是用汇编语言,程序员就必须制定程序用来执行计算的低级指令。 那么为什么我们还要学习和了解汇编呢? 虽然现在编译器已经替我们做了生成汇编代码的大部分工作,但是作为程序员,如果我们能够阅读和理解汇编代码将是一个非常重要的技能,好处是: 能够理解编译器的优化能力分析代码中隐含的低效率 如我们通过线程包写并发程序时,了解不同线程是如何共享程序数据或保持数据私有的,以及准确知道如何在哪里访问共享数据,这些在机器代码都是可见的 二、历史 Inter的处理器系统俗称x86,第一代处理器是8086,一个单芯片,16位微处理器,主要为 IBM PC 和 DOS 设计,有 1MB 的地址空间。八年后的 1985,第一个 32 位 Intel 处理器(IA32) 386 诞生。2004 年,奔腾(Pentium) 4E