2-指令系统与寻址方式_160604244
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
பைடு நூலகம்
图 2.1
软件翻译的层次
2.1.1
编译器
编译器将 C 程序转换为汇编语言程序——一种机器能理解的符号形式。 高级语言程序的 代码比汇编语言程序的代码短得多,所以程序员的编程效率大大提高。 1975 年,因为存储器小和编译器效率低,很多操作系统和汇编程序是用汇编语言写的。 现在,单个 DRAM 片存储容量增长了 16000 倍,这减少了对程序大小、的关心度,并且,现
OPCODE——操作码。 A——操作数的存储器地址或寄存器名。 指令中只给出一个地址, 该地址既是操作数的地址, 又是操作结果的存储地址。 如加 1, 减 1 和移位等单操作数指令均采用这种格式,对这一地址所指定的操作数执行相应的操作 后,产生的结果又存回该地址中。
在某些字长较短的微型机中(如早期的 Z80、Intel 8080、MC6800 等),大多数算术逻辑 运算指令也采用这种格式, 第一个源操作数由地址码 A 给出, 第二个源操作数在一个默认的 寄存器中,运算结果仍送回到这个寄存器中,替换了原寄存器内容,通常把这个寄存器称为 累加器。 3. 二地址指令 格式: OPCODE A1 A2
2.1.4 加载程序
现在可执行文件已经在磁盘上了, 操作系统将它读人存储器并开始运行。 , 在 UNIX 系统 中按以下步骤执行: (1) 读取可执行文件头以确定文本段和数据段的长度。 (2) 给文本段和数据段创建足够大的地址空间。
(3) 从可执行文件复制指令和数据到存储器中。 (4) 将参数(如果有)复制到主程序。 (5) 初始化机器寄存器,设置堆栈指针为第一个空闲位置。 (6) 跳转到开始例程,它将参数复制到参数寄存器并调用程序的主例程。当主例程返 回时,开始例程以一个 exit 系统调用来终止程序。
2.1.3 链接程序
按照前面所讲的编译、汇编生成可执行代码的方法,当改变一个过程中某一行程序时, 需要重新编译和汇编整个程序。 这种重复是对计算机资源的巨大浪费, 特别是对标准库例程 来说,因为标准库例程几乎是从不改变的。为避免这种重复,另一种行之有效的方法是独立 编译和汇编每一过程,这样,一行程序的改变只需重新编译和汇编一个过程。但是,把已经 汇编好的多个过程链接成可执行程序则需要一种新的系统程序,我们称之为链接编辑器 (1inkeditor)或链接程序。链接程序的工作分三个步骤: (1) 象征性地将代码和数据模块装入存储器。 (2) 确定数据和指令标号的地址。 (3) 修补所有内部和外部调用的真正地址。 链接程序用每个目标模块的重定位信息与符号表来消去所有未确定的标号。 这类调用出 现在分支指令、跳转指令和数据地址中,所以该程序的工作很像编辑器:找到旧的地址,代 之以新的地址。链接编辑器,或简称链接程序,其名称即来源于此。链接程序之所以可行, 其原因是修补代码比重新编译和汇编快得多。 在所有的外部调用都解决后, 接下来链接程序 要确定每个模块占用的存储器位置。
2.3 指令格式
计算机的指令格式与机器的字长、 存储器的容量及指令的功能都有很大的关系。 从 便 于程序设计,增加基本操作并行性,提高指令功能的角度来看,指令中所包含的信息以
多为宜;但在有些指令中,其中一部分信息可能无用,这将浪费指令所占酌存储空间,从而 增加了访存次数,也许反而会影响速度。因此,如何合理、科学地设计指令格式,使指令既 能给出足够的信息,其长度又尽可能地与机器的字长相匹配,以便节省存储空间,缩短取指 时伺,提奉机器的性能,乃是指令格式设计中的重要问题。
A1——第二个源操作数的存储器地址或寄存器地址。 A2——第二个源操作数和存放操作结果的存储器地址或寄存器地址。 这是最常见的指令格式,两个地址指,出两个源操作数地址,其中一个还是存放结果的 目的地址。对两个源操作数进行操作码所规定的操作后,将结果存人目的地址,在本例中即 为 A2 所指定的地址(在其他机器中,也有可能目的地址为 A1,编程时参考所用机器的说明 书)。 4. 三地址格式: 指令 格式: OPCODE A1 A2 A3
OPCODE——操作码。 A1——第一个源操作数的存储器地址或寄存器地址。 A2——第二个源操作数的存储器地址或寄存器地址。 A3——操作结果的存储器地址或寄存器地址。 其操作是对 Al,A2 指出的两个源操作数进行操作码(OPCODE)所指定的爆作,结果存入 A3 中。 5. 多地址指令 在某些性能较好的大、中型机甚至高档小型机中,往往设置一些功能很强的,用于处理 成批数据的指令,如字符串处理指令,向量、矩阵运算指令等。为了描述一批数据,指令中 需要多个地址来指出数据存放的首地址、长度和下标等信息。例如,CDCSTAR-100,的矩阵 运算指令, 其地址码部分有 7 个地址段, 用以指出用于运算的两个矩阵的存储情况及结果的 存放情况以上所述的几种指令格式只是一般情况,并非所有的计算机都具有。零地址、一地 址和两地址指令具有指令短,执行速度快,硬件实现简单等特点,适合结构较简单,字长较
2.3.1 指令格式
计算机是通过执行指令来处理各种数据的。 为了指出数据的来源、 操作结果的去向及所 执行的操作,一条指令一般包含下列信息。 (1) 操作码,具体说明操作的性质及功能。十台计算机可能有几十条至几百条指令,
每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同操作。 (2) 操作数的地址。CPU 通过该地址就可以取得所需的操作数。 (3) 操作结果的存储地址。把对操作数的处理所产生的缔果保存在该地址中,以便再 次使用。 (4) 下一条指令的地址。一般来说,当程序顺序执行时,下一条指令的地址由程序计 数器(PC)指出,仅当改变程序的运行顺序(如转移、调用子程序)时,下一条指令 的地址才由指令给出。 从上述分析可知, 一条指令实际上包括两种信息即操作码和地址码。 操作码(operation code)用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指 令系统中的指令条数; 地址码用来描述该指令的操作对象, 或者直接给出操作数或者指出操 作数的存储器地址或寄存器地址<即寄存器名)。 根据地址码部分所给出地址的个数, 指令格 式可分为如下几种。 1. 零地址指令 格式: OPCODE
在优化的编译器可以产生几乎与汇编语言专家编写的一样好的汇编语言程序, 对大程序来说 有时甚至更好。
2.1.2 汇编程序
既然汇编语言是更高层软件的接口, 那么汇编程序也可以处理常见的机器语言指令的变 形,好像它们是汇编语言的指令似的。这些指令不必用硬件实现,但是它们在汇编语言中的 出现简化了翻译与编程;这种指令称为伪指令(pseudo instruction)。
2 指令系统与寻址方式 2.1 软件执行的层次结构
现代计算机解题的一般过程是,用户用高级语言编写程序,连同数据一起送人计算机 (用户程序一般称为源程序)。 高级语言程序首先被编译为汇编语言程序, 然后汇编为机器语 言的目标模块。 链接程序将多个模块与库程序组合在一起以解决所有的调用。 加载程序将机 器代码放人合适的存储器位置以便处理器执行。 为了加快翻译过程, 某些步骤被省略或组合 到一起。有些编译器直接产生目标模块,有些系统使用链接程序完成最后的两步。图 2.1 显示了把磁盘上的 C 程序文件转换成机器中可执行程序所要进行的 4 个步骤。 某些机器可能 把其中几步合并起来以减少翻译时间, 但是, 从逻辑上来讲, 这 4 步是任何程序都要经历的。
包含旧机种的所有指令, 因此在旧机种上运行的各种软件可以不和任何修改地在新机种上运 行。 计算机发展至今, 其硬件结构随着超大规模集成电路(VLSl)技术的飞速发展而越来越复 杂化,所支持的指令系统也趋于多用途、强功能化。指令系统的改进是围笋着缩小指令与高 级语言的语义差异以及有利于操作系统的优化而进行的。 例如, 高级语言寸的实数计算是通 过浮点运算实现的, 因此对用于科学计算的计算机来讲, 如能设置浮点运算指令能显著提高 运算速度;另外在高级语言程序中经常用到 IF 语句、DO 语句等,为此设置功能,较强的条 件转移指令是有好处的;为了便于程序嵌套,设置了调用指令(Call)和返回指令(Return) 等。 上述这些措施都是为了便于高级语言程序编译以及提高机器运行速度而采取的, 这对简 化汇编语言程序设计也是很有利的。 为了便于操作系统的实现和优化, 还设置有控制系统状 态的特权指令、管理多道程序和多处理机系统的专用指令等。然而,指令结构太复杂也会带 来一些不利的因素,如设计周期长,正确性难以保证且不易维护等;此外,实验证明,在如 此庞大的指令系统中,只有诸如算术逻辑运算、数据传送、转移和子程序调用等几十条最基 本的指令才是经常使用的, 而需要大量硬件支持的大多数较复杂的指令却利用率很低, 造成 硬件资源的极大浪费。为了解决这个问题,在 70 年代末人们提出了便于 VLSI 实现的精简 指令系统计算机,简称 RISC(见后续)。
OPCODE——操作码。 指令中只有操作码,而没有操作数或没有操作数地址。这种指令有两种可能: 1. 无需任何操作数。如空操作指令,停机指令等。 2. 所需的操作数是默认的。 如堆栈结构计算机的运算指令, 所需的操作数默认在堆栈 中,由堆栈指针 SP 隐含指出,操作结果仍然放回堆栈中。又如 Intel 8086 的字符 串处理指令,源、目的操作数分别默认在源变址寄存器 SI 和目的变址寄存器 DI 所指定的存储器单元中。 2.一地址指令 格式: OPCODE A
2.2 指令系统的发展
计算机系统主要由硬件(hardware)和软件(software)两部分组成。 所谓硬件就是由中央 处理机(CPU)、存储器以及外部设备等组成的实际装置。软件则是为便于用户使用计算机而 编写的各种程序,最终转换成一系列机器指令后在计算机上执行。 计算机的性能与它所设置的指令系统有很大的关系, 而指令系统的设置又与机器的硬件 结构密切相关。通常性能较好的计算机都设叠有功能齐全、通用性强、指令丰富的指令系 统,但这需要复杂的硬件结构来支持。 在 20 世纪 50 年代和 60 年代早期,由于计算机采用分立元件(电子管或晶体管),其体 积庞大,价格昂贵,因此,大多数计算机的硬件结构比较简单。所支持的指令系统一般只有 定点加减运算、逻辑运算、数据传送和转移等十几至几十条最基本的指令,而且寻址方式简 单。到 60 年代中、后期,随着集成电路的出现,计算机的价格不断下降,硬件功能不断增 强,指令系统也越来越丰富。除了具有以上最基本的指令以外,还设置了乘除法运算指令、 浮点运算指令、十进制运算指令以及字符串处理指令等,指令数多达一、二百条,寻址方式 也趋于多样化。 随着集成电路的发展和计算机应用领域的不断扩大,计算机的软件价格相对不断提高。 为了继承已有的软件,减少软件的开发费用,人们迫切希望各机器上的软件能够兼容,9 便 在旧机器上编制的各种软件也能在新的、性能更好的机器上正确运行,因此,在 60 年代出 现了系列(series)计算机。 所谓系列计算机是指基本指令系统相同, 基本体系结构相同的一系列计算机, 如 IBM370 系列,VAX—11 系列,IBMPC(XT/AT/286/386/486/Pentium)微机系列等。一个系列往 往有多种型号,由于推出的时间不同,所采用的器件也不同,因此在结构和性能上可以有很 大差异。 通常是新推出的机种在性能和价格方面要比早推出的机种优萨。 系列机能解决软件 兼容问题的必要条件是该系列的各机种有共同的指令集, 而且新推出甲机种的指令系统一定
短的小型、微型机所采用;而三地址和多地址指令具有功能强,便于编程等特点,多为字长 较长的大、巨型机所采用。但也不能一概而论,因为还与指令本身的功能有关,例如停机指 令不需要地址,对所有计算机都一样,所以短指令有可能被各种类型计算机采用。 在计算机中,指令和数据一样都是以二进制码的形式存储的,从表面来看,两者没有什 么差别。但是,指令的地址是由程序计数器(PC)规定的,而数据的地址是由指令规定的,在 CPU 控制下访存绝对不会将指令和数据混淆。为了程序能重复执行,一般要求程序在运行前 后所有的指令都保持不变,因此在程序执行过程中,要避免修改指令。在有些计算机中如果 发生了修改指令情况,按出错处理。
图 2.1
软件翻译的层次
2.1.1
编译器
编译器将 C 程序转换为汇编语言程序——一种机器能理解的符号形式。 高级语言程序的 代码比汇编语言程序的代码短得多,所以程序员的编程效率大大提高。 1975 年,因为存储器小和编译器效率低,很多操作系统和汇编程序是用汇编语言写的。 现在,单个 DRAM 片存储容量增长了 16000 倍,这减少了对程序大小、的关心度,并且,现
OPCODE——操作码。 A——操作数的存储器地址或寄存器名。 指令中只给出一个地址, 该地址既是操作数的地址, 又是操作结果的存储地址。 如加 1, 减 1 和移位等单操作数指令均采用这种格式,对这一地址所指定的操作数执行相应的操作 后,产生的结果又存回该地址中。
在某些字长较短的微型机中(如早期的 Z80、Intel 8080、MC6800 等),大多数算术逻辑 运算指令也采用这种格式, 第一个源操作数由地址码 A 给出, 第二个源操作数在一个默认的 寄存器中,运算结果仍送回到这个寄存器中,替换了原寄存器内容,通常把这个寄存器称为 累加器。 3. 二地址指令 格式: OPCODE A1 A2
2.1.4 加载程序
现在可执行文件已经在磁盘上了, 操作系统将它读人存储器并开始运行。 , 在 UNIX 系统 中按以下步骤执行: (1) 读取可执行文件头以确定文本段和数据段的长度。 (2) 给文本段和数据段创建足够大的地址空间。
(3) 从可执行文件复制指令和数据到存储器中。 (4) 将参数(如果有)复制到主程序。 (5) 初始化机器寄存器,设置堆栈指针为第一个空闲位置。 (6) 跳转到开始例程,它将参数复制到参数寄存器并调用程序的主例程。当主例程返 回时,开始例程以一个 exit 系统调用来终止程序。
2.1.3 链接程序
按照前面所讲的编译、汇编生成可执行代码的方法,当改变一个过程中某一行程序时, 需要重新编译和汇编整个程序。 这种重复是对计算机资源的巨大浪费, 特别是对标准库例程 来说,因为标准库例程几乎是从不改变的。为避免这种重复,另一种行之有效的方法是独立 编译和汇编每一过程,这样,一行程序的改变只需重新编译和汇编一个过程。但是,把已经 汇编好的多个过程链接成可执行程序则需要一种新的系统程序,我们称之为链接编辑器 (1inkeditor)或链接程序。链接程序的工作分三个步骤: (1) 象征性地将代码和数据模块装入存储器。 (2) 确定数据和指令标号的地址。 (3) 修补所有内部和外部调用的真正地址。 链接程序用每个目标模块的重定位信息与符号表来消去所有未确定的标号。 这类调用出 现在分支指令、跳转指令和数据地址中,所以该程序的工作很像编辑器:找到旧的地址,代 之以新的地址。链接编辑器,或简称链接程序,其名称即来源于此。链接程序之所以可行, 其原因是修补代码比重新编译和汇编快得多。 在所有的外部调用都解决后, 接下来链接程序 要确定每个模块占用的存储器位置。
2.3 指令格式
计算机的指令格式与机器的字长、 存储器的容量及指令的功能都有很大的关系。 从 便 于程序设计,增加基本操作并行性,提高指令功能的角度来看,指令中所包含的信息以
多为宜;但在有些指令中,其中一部分信息可能无用,这将浪费指令所占酌存储空间,从而 增加了访存次数,也许反而会影响速度。因此,如何合理、科学地设计指令格式,使指令既 能给出足够的信息,其长度又尽可能地与机器的字长相匹配,以便节省存储空间,缩短取指 时伺,提奉机器的性能,乃是指令格式设计中的重要问题。
A1——第二个源操作数的存储器地址或寄存器地址。 A2——第二个源操作数和存放操作结果的存储器地址或寄存器地址。 这是最常见的指令格式,两个地址指,出两个源操作数地址,其中一个还是存放结果的 目的地址。对两个源操作数进行操作码所规定的操作后,将结果存人目的地址,在本例中即 为 A2 所指定的地址(在其他机器中,也有可能目的地址为 A1,编程时参考所用机器的说明 书)。 4. 三地址格式: 指令 格式: OPCODE A1 A2 A3
OPCODE——操作码。 A1——第一个源操作数的存储器地址或寄存器地址。 A2——第二个源操作数的存储器地址或寄存器地址。 A3——操作结果的存储器地址或寄存器地址。 其操作是对 Al,A2 指出的两个源操作数进行操作码(OPCODE)所指定的爆作,结果存入 A3 中。 5. 多地址指令 在某些性能较好的大、中型机甚至高档小型机中,往往设置一些功能很强的,用于处理 成批数据的指令,如字符串处理指令,向量、矩阵运算指令等。为了描述一批数据,指令中 需要多个地址来指出数据存放的首地址、长度和下标等信息。例如,CDCSTAR-100,的矩阵 运算指令, 其地址码部分有 7 个地址段, 用以指出用于运算的两个矩阵的存储情况及结果的 存放情况以上所述的几种指令格式只是一般情况,并非所有的计算机都具有。零地址、一地 址和两地址指令具有指令短,执行速度快,硬件实现简单等特点,适合结构较简单,字长较
2.3.1 指令格式
计算机是通过执行指令来处理各种数据的。 为了指出数据的来源、 操作结果的去向及所 执行的操作,一条指令一般包含下列信息。 (1) 操作码,具体说明操作的性质及功能。十台计算机可能有几十条至几百条指令,
每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同操作。 (2) 操作数的地址。CPU 通过该地址就可以取得所需的操作数。 (3) 操作结果的存储地址。把对操作数的处理所产生的缔果保存在该地址中,以便再 次使用。 (4) 下一条指令的地址。一般来说,当程序顺序执行时,下一条指令的地址由程序计 数器(PC)指出,仅当改变程序的运行顺序(如转移、调用子程序)时,下一条指令 的地址才由指令给出。 从上述分析可知, 一条指令实际上包括两种信息即操作码和地址码。 操作码(operation code)用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指 令系统中的指令条数; 地址码用来描述该指令的操作对象, 或者直接给出操作数或者指出操 作数的存储器地址或寄存器地址<即寄存器名)。 根据地址码部分所给出地址的个数, 指令格 式可分为如下几种。 1. 零地址指令 格式: OPCODE
在优化的编译器可以产生几乎与汇编语言专家编写的一样好的汇编语言程序, 对大程序来说 有时甚至更好。
2.1.2 汇编程序
既然汇编语言是更高层软件的接口, 那么汇编程序也可以处理常见的机器语言指令的变 形,好像它们是汇编语言的指令似的。这些指令不必用硬件实现,但是它们在汇编语言中的 出现简化了翻译与编程;这种指令称为伪指令(pseudo instruction)。
2 指令系统与寻址方式 2.1 软件执行的层次结构
现代计算机解题的一般过程是,用户用高级语言编写程序,连同数据一起送人计算机 (用户程序一般称为源程序)。 高级语言程序首先被编译为汇编语言程序, 然后汇编为机器语 言的目标模块。 链接程序将多个模块与库程序组合在一起以解决所有的调用。 加载程序将机 器代码放人合适的存储器位置以便处理器执行。 为了加快翻译过程, 某些步骤被省略或组合 到一起。有些编译器直接产生目标模块,有些系统使用链接程序完成最后的两步。图 2.1 显示了把磁盘上的 C 程序文件转换成机器中可执行程序所要进行的 4 个步骤。 某些机器可能 把其中几步合并起来以减少翻译时间, 但是, 从逻辑上来讲, 这 4 步是任何程序都要经历的。
包含旧机种的所有指令, 因此在旧机种上运行的各种软件可以不和任何修改地在新机种上运 行。 计算机发展至今, 其硬件结构随着超大规模集成电路(VLSl)技术的飞速发展而越来越复 杂化,所支持的指令系统也趋于多用途、强功能化。指令系统的改进是围笋着缩小指令与高 级语言的语义差异以及有利于操作系统的优化而进行的。 例如, 高级语言寸的实数计算是通 过浮点运算实现的, 因此对用于科学计算的计算机来讲, 如能设置浮点运算指令能显著提高 运算速度;另外在高级语言程序中经常用到 IF 语句、DO 语句等,为此设置功能,较强的条 件转移指令是有好处的;为了便于程序嵌套,设置了调用指令(Call)和返回指令(Return) 等。 上述这些措施都是为了便于高级语言程序编译以及提高机器运行速度而采取的, 这对简 化汇编语言程序设计也是很有利的。 为了便于操作系统的实现和优化, 还设置有控制系统状 态的特权指令、管理多道程序和多处理机系统的专用指令等。然而,指令结构太复杂也会带 来一些不利的因素,如设计周期长,正确性难以保证且不易维护等;此外,实验证明,在如 此庞大的指令系统中,只有诸如算术逻辑运算、数据传送、转移和子程序调用等几十条最基 本的指令才是经常使用的, 而需要大量硬件支持的大多数较复杂的指令却利用率很低, 造成 硬件资源的极大浪费。为了解决这个问题,在 70 年代末人们提出了便于 VLSI 实现的精简 指令系统计算机,简称 RISC(见后续)。
OPCODE——操作码。 指令中只有操作码,而没有操作数或没有操作数地址。这种指令有两种可能: 1. 无需任何操作数。如空操作指令,停机指令等。 2. 所需的操作数是默认的。 如堆栈结构计算机的运算指令, 所需的操作数默认在堆栈 中,由堆栈指针 SP 隐含指出,操作结果仍然放回堆栈中。又如 Intel 8086 的字符 串处理指令,源、目的操作数分别默认在源变址寄存器 SI 和目的变址寄存器 DI 所指定的存储器单元中。 2.一地址指令 格式: OPCODE A
2.2 指令系统的发展
计算机系统主要由硬件(hardware)和软件(software)两部分组成。 所谓硬件就是由中央 处理机(CPU)、存储器以及外部设备等组成的实际装置。软件则是为便于用户使用计算机而 编写的各种程序,最终转换成一系列机器指令后在计算机上执行。 计算机的性能与它所设置的指令系统有很大的关系, 而指令系统的设置又与机器的硬件 结构密切相关。通常性能较好的计算机都设叠有功能齐全、通用性强、指令丰富的指令系 统,但这需要复杂的硬件结构来支持。 在 20 世纪 50 年代和 60 年代早期,由于计算机采用分立元件(电子管或晶体管),其体 积庞大,价格昂贵,因此,大多数计算机的硬件结构比较简单。所支持的指令系统一般只有 定点加减运算、逻辑运算、数据传送和转移等十几至几十条最基本的指令,而且寻址方式简 单。到 60 年代中、后期,随着集成电路的出现,计算机的价格不断下降,硬件功能不断增 强,指令系统也越来越丰富。除了具有以上最基本的指令以外,还设置了乘除法运算指令、 浮点运算指令、十进制运算指令以及字符串处理指令等,指令数多达一、二百条,寻址方式 也趋于多样化。 随着集成电路的发展和计算机应用领域的不断扩大,计算机的软件价格相对不断提高。 为了继承已有的软件,减少软件的开发费用,人们迫切希望各机器上的软件能够兼容,9 便 在旧机器上编制的各种软件也能在新的、性能更好的机器上正确运行,因此,在 60 年代出 现了系列(series)计算机。 所谓系列计算机是指基本指令系统相同, 基本体系结构相同的一系列计算机, 如 IBM370 系列,VAX—11 系列,IBMPC(XT/AT/286/386/486/Pentium)微机系列等。一个系列往 往有多种型号,由于推出的时间不同,所采用的器件也不同,因此在结构和性能上可以有很 大差异。 通常是新推出的机种在性能和价格方面要比早推出的机种优萨。 系列机能解决软件 兼容问题的必要条件是该系列的各机种有共同的指令集, 而且新推出甲机种的指令系统一定
短的小型、微型机所采用;而三地址和多地址指令具有功能强,便于编程等特点,多为字长 较长的大、巨型机所采用。但也不能一概而论,因为还与指令本身的功能有关,例如停机指 令不需要地址,对所有计算机都一样,所以短指令有可能被各种类型计算机采用。 在计算机中,指令和数据一样都是以二进制码的形式存储的,从表面来看,两者没有什 么差别。但是,指令的地址是由程序计数器(PC)规定的,而数据的地址是由指令规定的,在 CPU 控制下访存绝对不会将指令和数据混淆。为了程序能重复执行,一般要求程序在运行前 后所有的指令都保持不变,因此在程序执行过程中,要避免修改指令。在有些计算机中如果 发生了修改指令情况,按出错处理。