第4章_计算机指令构成和寻址方式
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Pentium指令系统所支持的数据类型:
1. 整数:补码表示的二进制数,字节(8位)、字(16位)和双字(32 位)3种。
2. 序数:无符号二进制数,字节(8位)、字(16位)和双字(32位)3 种。
3. UBCD数:未压缩的(unpacked)BCD数,数字值0到9,每个数字 占一个字节。 4. BCD数:压缩的BCD数,一个字节可以表示2位数字,从00到99。 5. 指针:32位有效地址,指出段内的地址偏移量。
二地址指令
一地址指令 零地址指令
add r1,r2
add r1 add
r1←r1+r2
A←A+r1 T←T+(T-1)
寻址方式:
寻址方式指的是如何描述一个操作数或下一条指令的地址, 即确定操作数或下一条指令地址的方法。常用的寻址方式有 立即数寻址、寄存器寻址、直接寻址、间接寻址、相对寻址 等。
指令长度: 指令长度有固定长度和可变长度两种。RISC处理机一般采用 固定长度的指令格式,例如SUN SPARC的指令长度均为32位, 与数据字长相同。定长指令格式的好处在于指令译码和流水 线执行比较容易。Pentium处理机的指令长度是可变的,常用 指令用较少的二进制位表示,不常用的指令使用较多的位表 示,它的好处是可以缩短指令的平均长度。 指令系统设计中的问题: 指令种类和寻址方式越多越好,还是越少越好?指令种类越 多、寻址方式越复杂,说明处理机的功能越强。但同时,实 现一条复杂指令需要较多的逻辑门电路,执行一条复杂指令 所化费的时间也比较长,而且处理机的设计复杂度提高、设 计周期增长,并且复杂指令的使用频率较低。指令种类少、 寻址方式简单的好处是可以提高时钟频率,缩短指令周期, 从而很快完成一条指令的执行。但并不是越简单越好,指令 太简单,完成一次比较复杂的操作往往需要一长串的简单指 令序列,也会使执行时间变长,同时也使程序变长。
显然,BCD码是有权码,权为8421。每个十进制数位 内部满足二进制规则,而十进制数位之间满足十进 制规则。在计算机内部实现BCD码算术运算,要对计 算结果进行修正,对加法运算的修正规则是:如果 两个一位BCD码相加之和小于或等于9,不需要修正, 若相加之和大于9,要进行加6修正,并向高位进位, 进位可以在首次相加或修正时产生。
2. 短整数:补码表示的32位带符号数。
3. 长整数:补码表示的64位带符号数。 4. BCD数:共80位,最高位是符号位,紧接着的7位 没有使用,剩下的72位表示18个BCD数字。 5. 单精度浮点数:32位。
6. 双精度浮点数:64位。
7. 扩展精度浮点数:80位。
SPARC数据类型:
1. 整数:补码表示的二进制数,字节(8位)、半字(16位)、 字(32位)、双字(64位)。 2. 无符号数:字节(8位)、半字(16位)、字(32位)、双字(64 位)。 3. 单精度浮点数:32位。IEEE754浮点标准。 4. 双精度浮点数:64位。IEEE754浮点标准。
指令和数据在计算机内都是用二进制表示的,保存在存储 器内,那么如何区分指令和数据呢?指令的地址由程序计数 器给出,数据的地址的信息则由指令提供。为了防止指令被 修改,便于指令重复使用,指令和数据通常分开存放。 一条指令的功能是告诉计算机完成何种操作以及如何完成 操作,因此指令应该包括以下4种信息: 1、指令操作码。指出指令要完成的操作类型,若为n位,则 最多可表示2n种操作。 2、源操作数地址。指明从哪里得到源操作数。操作数主要来 自于处理器内部的寄存器和主存储器,若来自于内部寄存器, 则源操作数地址是寄存器号码,若来自于主存,则给出主存 单元地址。存储器地址位数较多,有时直接在指令中全部给 出比较困难,而且为了增加指令的灵活性、方便性和功能, 我们往往采用多种寻址方式。I/O设备可以和存储器统一编址, 也可以单独编址。 3、目的操作数地址。指出操作结果存放在什么地方,与源操 作数地址的指定方法是一样的。
6. 位字段:连续的位,或称之为位串。位串可以开始于任意字节 中的任意位置。位串长度可达232-1位。
7. 字节串:连续的字节,也可以是连续的字或双字,有专门的串 指令能对上述三种串进行处理。串长度为0到232-1字节。 8. 浮点数:见下页。
Pentium浮点部件所支持的数据类型:
1. 字整数:补码表示的16位带符号数。
4.2 操作数类型
操作数类型包括:地址(address)、数字(number)、字符 (character)、逻辑数据(logic data)。 地址:主要是存储器地址,由访问存储器的指令计算出, 我们可以认为它是无符号整数。 数字:可以分为以下3种:整数(integer)或定点数(fixed point)、浮点数(floating point)、十进制数(decimal)。有 关整数和浮点数,前面已经做过介绍,下面介绍十进制数。 BCD(binary coded decimal)码及其运算规则 用4位二进制编码表示一个十进制位: 0=0000 1=0001 2=0010 3=0011 4=0100 5=0101 6=0110 7=0111 8=1000 9=1001
4、SPARC用两条指令来完成设置某个寄存器初值的功能,先用 sethi,再用add或or。
4.3 指令类型
5、SPARC处理机还有一个与众不同的地方,就是它的r0寄存器的内容永远 为0。写入r0的数据被忽略,从r0中读出的数据总是0。利用这个特点,我 们可以完成很多指令系统中没有的操作,见课本P103表4.8。
4、下一条指令的地址。指出紧接着本条指令要执行的下一条 指令的地址。若程序是顺序执行,并不需要在指令中给出下 一条指令的地址,而是由程序计数器PC中的内容指定;只有 在程序发生转移的情况下,才需要指出下一条指令的地址, 这由转移指令提供。
机器指令的助记符表示: 为了编程方便,也便于理解和记忆,采用各种有意义的符号 表示指令的含义,从而形成了汇编语言。以下是一些常用的 助记符: add sub mul div and or load store 汇编指令举例:
转移控制指令转移控制指令33陷阱与陷阱指令陷阱与陷阱指令陷阱实际上是一种意外事故中断它中断的主要目陷阱实际上是一种意外事故中断它中断的主要目的不是为了请求的不是为了请求cpucpu的正常处理而是通知的正常处理而是通知cpucpu已经出已经出现了故障并根据故障情况转入相应的故障处理程现了故障并根据故障情况转入相应的故障处理程在一般计算机中陷阱指令作为隐含指令不提供给在一般计算机中陷阱指令作为隐含指令不提供给用户使用只有在出现故障时才有用户使用只有在出现故障时才有cpucpu自动产生并执自动产生并执行
小尾端(Little-Endian):低字节存放在低地址。
大尾端(Big-Endian):高字节存放在低地址。 采用小尾端方法的处理机有:Intel80x86/Pentium,DEC VAX,DEC Alpha等。 采用大尾端方法的处理机有:IBM360/370,Motorola 68K,MIPS,SPARC,HPPA等。
4.3 指令类型
逻辑运算指令: 主要有与、或、非、异或等操作,它们的共同特点是按位操作, 位与位之间不发生关系。
常用算术逻辑运算指令:
见课本P102表4.7 几点应该注意的问题: 1、加减运算指令可以让当前的进位位参加运算,也可以不让它 参加运算。 2、比较指令comp与subcc指令类似,做减法操作并设置条件码, 只是comp不保存相减结果。 3、带有后缀c的指令,表示进位位参加运算,带有后缀cc的指 令,表示做某种操作并设置条件码,带有后缀ccc的指令,表 示进位位参加运算并设置条件码。
第4章
计算机指令构成和寻址方式
本章主要内容
1.指令系统概述
2.操作数类型 3.指令类型
4.寻址方式 5.指令格式
4.1 指令系统概述
计算机系统由硬件和软件两部分组成。硬件指由中 央处理机、存储器以及外部设备等组成的实际装置。 软件是为便于用户使用计算机而编写的各种程序,是 由一系列机器指令组成的。 指令是用户使用计算机和计算机运行的最小的功能 单位,一台计算机支持(或称使用)的全部指令构成 该计算机的指令系统。指令系统是计算机硬件和软件 之间的界面和桥梁,它对计算机的硬件的复杂程度和 运行性能,对程序设计的难易程度和工作效率,都有 非常重要的影响,因此指令系统设计是计算机设计中 的关键问题,应给以足够的重视。
往存储器中写数据时,如果是字节,则把32位寄 存器中的低8位数据写入存储器中;如果是半字, 则把32位寄存器中的低16位数据写入存储器中; 如果是双字,则把2个32位寄存器中的数据写入存 储器中。同取数据一样,第一个寄存器号一定为 偶数。
4.3 指令类型
常用的指令类型: 算术运算指令、逻辑运算指令、移位指令、存储器访问指令、 I/O访问指令(若I/O空间与存储器空间是分开的)、转移指令、 浮点运算指令、其它指令(用于处理机本身状态控制的指令及特 殊类型的运算指令等)。 算术运算指令: 多数计算机提供加减乘除4种基本的算术运算指令。也有一些计 算机没有乘除运算指令,而是通过软件编程的方法实现乘除运算。 除了加减乘除指令外,有些处理机可能还有其它一些算术运算类 指令。 条件码寄存器: 用于存放指令结果的状态,常见的条件码寄存器有C(carry)、 N(negative)、V(overflow)、Z(zero)。这些条件码主要被条件 转移指令用来判断是否转移。当某种情况发生时,则相应的条件 码寄存器被设置为1,否则清零。有些处理机在执行算术运算指 令时总是设置条件码,有些处理机则可以使用不同的指令,对是 否设置条件码加以选择。
例题: (1)1+8=9
0001 + 1000 1001 不需要修正
(2)4+9=13
0100 + 1001 1101 + 0110 修正 10011 进位
(3)9+7=16
1001 + 0111 10000 + 0110 修正 10110 进位
BCD码的存储:一个字节保存2位BCD码,十进制数的符号也 用4位二进制编码表示,比如用1111表示负号、0000表示正号, 则十进制246的BCD码为: 0000 0010 0100 0110,占2个字节;-246的BCD码为: 1111 0010 0100 0110,也占2个字节。 字符:前面已经介绍过,略。 数据在存储器中的存放:
对指令系统的要求
完备性: 功能齐全,编程方便 高效性:占内存少,运行省时 规整性:格式规整、实现简单 兼容性:新旧机指令软件兼容
当前的计算机指令系统,从其构成的复杂和完备程度,或者 说设计中追求的不同的目标区分,可分为 CISC 和RISC 两类: RISC(Reduced Instruction Set Computer),通常称为精简 指令系统的计算机,提供数目较少、格式与功能简单、运行高 效的指令,追求的是计算机控制器实现简单,运行高速,更容 易在单块超大规模集成电路的芯片内制做出来。 CISC (Complex Instruction Set Computer),通常称为复 杂指令系统的计算机,是相对于 RISC 一词而提出来的一种说 法。其特点是:指令条数多,格式多样,寻址方式复杂,每条 指令的功能强,优点是汇编程序设计容易些,但计算机控制器 的实现困难多,很多指令被使用的机会并不多。
add r1,r2,r3
Load r1,100(r2)
;r1=r2+r3
;将内存中地址为r2+100的数据取到r1中
RISC体系结构的共同特点是LOAD/STORE结构,即访问存储 器的指令只有LOAD/STORE两种,其他指令只使用寄存器操作 数。
指令系统包括的指令类型:
算术运算指令、逻辑运算指令、移位指令、存储器访问指令、 I/O访问指令(若I/O空间与存储器空间是分开的)、转移指 令、浮点运算指令、字符串操作指令、其它指令(用于处理 机本身状态控制的指令及特殊类型的运算指令等)。 指令操作数地址个数: 三地址指令 add r1,r2,r3 r1←r2+r3
5. 扩展精度浮点数:128位,占4个字。最高字的最高位是符 号位,紧接着的15位是移码表示的阶码,该字剩下的位没 有使用。紧接着的两个字是64位的尾数,包括整数部分和 小数部分,无隐藏位。最低字没有使用。
SUN SPARC的字长为32位。具有LOAD/STORE结构。 内部寄存器32位,当从存储器取来的数据不足32 位时,也要占用一个整个的寄存器,并对高位部 分进行扩展。如果是无符号数,则高位部分填充0; 如果是有符号数,则对高位部分进行符号扩展, 即把字节或半字的最高位复制到剩余的高位部分; 如果是双字,则占用两个连续的寄存器,并且第 一个寄存器号一定为偶数,见P101图4.2。