计算机组成原理---第四章 指令系统

news2024/11/18 3:38:44

一、指令系统的发展与性能要求

 

  1. 指令系统的概述

指令就是要计算机执行某种操作的命令。可分为:①微指令,属于硬件;②机器指令,简称指令,完成算术逻辑操作;③宏指令,由若干条机器指令组成,属于软件。

2. 计算机发展 

随着计算机的发展,大多数计算机的指令系统多达几百条,因此称这些计算机为复杂指令系统计算机,简称

CISC;由于最常使用的简单指令仅占指令总数的较小一部分,从而造成硬件的浪费,因此又提出一种精简指令系统计算机,简称RISC。

3.指令系统的性能要求

①完备性

②有效性

③规整性:规整性包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。

④ 兼容性

二、指令格式

Ⅰ定义:

指令格式:令字用二进制代码表示的结构形式,通常由操作码和地址码字段组成。

一条指令的结构可用如下形式来表示:

      操作码字段OP 地址码字段A

解释:

 ①操作码:指令的操作码OP表示该指令应进行何种性质的操作。每一个包含n位的操作码最多能够表示2的n次幂条指令,其通常是固定的。

    操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。

操作码是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。例

如,指出是算术加运算,还是减运算;是程序转移,还是返回操作。

 

    注意:①定长操作码:一般 n 位操作码字段的指令系统最大能够表示2ⁿ条指令。
②最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的
指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。

②地址码:按照地址码个数来分,指令可分为4类,如图所示。

  其他分类:

 ③ 指令字长度

       一个指令字中包含二进制代码的位数,称为指令字长度;而机器字长是指计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。①指令字长度等于机器字长度的指令,称为单字长指令;②指令字长度等于半个机器字长度的指令,称为半字长指令;③指令字长度等于两个机器字长度的指令,称为双字长指令。

④ 指令助记符

      为便于书写和阅读程序,每条指令通常用 3 个或 4 个英文缩写字母来表示。这种缩写码称为指令助记符,如:

典型的指令助记符

典型指令

指令助记符

二进制操作码

加法

ADD

001

减法

SUB

010

传送

MOV

011

跳转

JMP

100

转子

JSR

101

存数

STO

110

取数

LAD

111

经典的指令格式

(1) MIPS R4000指令

 

①算术指令格式

MIPS R4000 是一种RISC计算机系统,字长32位,按字节寻址。通用寄存器32个,其算术指令格式如下:          

                R型      6位          5位        5位        5位           5位                      6位  

oprsrtrdsharmtfunct

字段解释

a.op 字段:操作码,指定一条指令的基本操作;

b.rs 字段:指定第 1 个源操作数寄存器,最多有 32 个寄存器;

c.rt 字段:指定第 2 个源操作数寄存器,最多有 32 个寄存器;

d.rd 字段:指定存放操作结果的目的数寄存器,最多有 32 个寄存器;

e.shamt 字段:移位值,用于移位指令;

f.funct 字段:函数码,指定 R 型指令的特定操作。

 

 

②  R型指令

在 MIPS 中,所有的算术运算数据必须放在通过寄存器中,此时的指令格式称为R 型(寄存器)指令。R 型指令格式就是上面所示的算术指令格式。

在 MIPS 中,访问存储器(取数或存数)需要使用数据传送指令。此时的指令格式,称为I 型(立即数)指令,其指令格式如下所示:

      I型              6位          5位        5位         16(5+ 5+6位)位  

oprsrt常数或地址(addres)

16位字段address(地址)提供取字指令(LW)、存字指令(SW)来访问存储器的基值地址码(也称位移量)。

 

 

③ MIPS 字段值:MIPS 指令的每一字段的值(十进制)如表所示。

MIPS 指令的字段值

指令

格式

op

rs

rt

rd

shamt

funct

常数或地址

add(加)

R

0

reg

reg

reg

0

32

-

sub(减)

R

0

reg

reg

reg

0

34

-

立即数加

I

8

reg

reg

-

-

-

常数

lw(取字)

I

35

reg

reg

-

-

-

address

sw(存字)

I

43

reg

reg

-

-

-

address

      reg 表示 0~31 中间的一个寄存器号,address 表示一个 16 位地址,而“-”表示该格式中这个字段没有出现。 加法(add)指令和减法(sub)指令的 op 字段值相同;硬件是根据 funct 字段来确定操作类型: 加法(32)或减法(34)。

(2)ARM 指令

①指令格式

ARM 是字长 32 位的嵌入式处理机,它具有世界上最流行的指令集。下面是 ARM 指令集的一种指令格式:

               4位         2位    1         4               1         4           4            12

condFIopcodeSRnRdoperand2

 

②字段含义

opcode:指明指令的基本操作,称为操作码;

Rd:指明目标寄存器地址(4 位),共 16 个寄存器;

Rn:指明源寄存器地址(4 位),共 16 个寄存器;

operand 2:指明第 2 个源操作数;

        I:指明立即数,如果 I=0,第 2 个源操作数在寄存器中,如果I=1,第 2 个源操作数是 12 位的立即数;

       S:设置状态,该字段涉及条件转移指令;

        cond:指明条件,该字段涉及条件转移指令;

     F:说明指令类型,当需要时该字段允许设置不同的指令。

三、操作数类型

机器指令对数据进行操作,数据通常分以下四类:

① 地址数据

② 数值数据:①定点整数或定点小数;②浮点数;③压缩十进制数,一个字节用2位BCD码表示。

③字符数据:字符数据也称为文本数据或字符串,目前广泛使用ASCII码。

④逻辑数据:一个单元中有若干二进制位项组成,每个位的值可以是1或0,用以判断“真”与“假”。

四、操作类型

   机器指令对操作类型进行分类,操作通常分以下四类:

①数据传送

② 算术逻辑操作

③移位操作

④转移操作

⑤输入输出操作

 分类的总结

五、指令和数据的寻址方式

  1. 概述

        Ⅰ 定义:几乎所有的计算机,在内存中都采用地址指定方式。当采用地址指定方式时,形成操作数或指令地址的方式,称为寻址方式。

          Ⅱ 分类:①指令寻址方式,这种方式相对简单②数据寻址方式,这种方式比较复杂。

在冯·诺依曼型结构的计算机中,内存中指令的寻址与数据的寻址是交替进行的,而哈佛型计算机中,指令寻址和数据寻址是独立进行的。

2.指令的寻址方式

         指令的寻址方式有两种,一种是顺序寻址方式,另一种是跳跃寻址方式。

        ❶顺序寻址方式:由于指令地址在内存中按顺序排列,执行一段程序时,通常是一条指令接一条指令的顺序进行。为此,必须使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。指令顺序寻址方式的示意图如图 所示。

 

       ❷ 跳跃寻址方式:跳跃是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。程序跳跃后,按新的指令地址开始顺序执行。指令跳跃寻址方式的示意图如图  所示。

3.操作数基本寻址方式

形成操作数的有限地址的方法,称为操作数的寻址方式。一种单地址指令的结构为:

操作码

  OP

寻址方式形式地址

一般指令中操作数的获取是由寻址方式和形式地址组合而成,也可以是通用寄存器与寻址方式的组合,若没有指定寻址方式,则通用寄存器采用寄存器寻址,形式地址为直接寻址,其他情况视具体指令而定。

由于大型机、微型机和单片机结构不同,从而形成了各种不同的操作数寻址方式。比较典型而常用的寻址方式如表所示。

基本寻址方式

方式

算法

主要优点

主要缺点

隐含寻址

操作数在专用寄存器

无存储器访问

数据范围有限

立即寻址

操作数=A

无存储器访问

操作数幅值有限

直接寻址

EA=A

简单

地址范围有限

间接寻址

EA=(A)

大的地址范围

多重存储器访问

寄存器寻址

EA=R

无存储器访问

地址范围有限

寄存器间接寻址

EA=(R)

大的地址范围

额外存储器访问

偏移寻址

EA=A+(R)

灵活

复杂

段寻址

EA=A+(R)

灵活

复杂

堆栈寻址

EA=栈顶

无存储器访问

应用有限

 

在上面的偏移寻址中,有三种是常用的:

①相对寻址:引用的专用寄存器为程序计数器 PC,即 EA=A+(PC)

②基址寻址:引用的专用寄存器为一个含有该地址偏移量的基址寄存器

③变址寻址:引用的专用寄存器含有对该地址的正偏移量,通常称为变址寄存器

六、典型指令

  1. 指令的分类     

    ① 数据传送指令:主要包括取数指令、存数指令、传送指令、成组传送指令、字节交换指令、清寄存器指令、堆栈操作指令等。

    ② 算术运算指令:这类指令主要用于定点或浮点的算术运算。

   ③ 逻辑运算指令:这类指令主要用于无符号数的位操作、代码的转换、判断及运算。

   ④ 程序控制指令:程序控制指令也称转移指令。 

   ⑤ 输入输出指令

   ⑥字符串处理指令

  ⑦ 特权指令:特权指令是指具有特殊权限的指令。

  ⑧其他指令

2.基本指令系统的操作

     CISC 指令系统的指令多达二三百条,其中最常用的只占20%,因此容易造成硬件的浪费。其中基本指令如表所示。

基本指令系统的操作

指令类型

操作名称

说明

数据传送

MOV 传送

由源向目标传送字,源和目标是寄存器

STO 存数

由 CPU 向存储器传送字

LAD 取数

由存储器向 CPU 传送字

EXC 交换

源和目标交换内容

CLA 清零

传送全 0 字到目标

SET 置 1

传送全 1 字到目标

PUS 进栈

由源向堆栈顶传送字

POP 退栈

由堆栈顶向目标传送字

算术运算

ADD 加法

计算两个操作数的和

SUB 减法

计算两个操作数的差

MUL 乘法

计算两个操作数的积

DIV 除法

计算两个操作数的商

ABS 绝对值

以其绝对值替代操作数

NEG 变负

改变操作数的符号

INC 增量

操作数加 1

DEC 减量

操作数减 1

逻辑运算

AND 与

按位完成指定的逻辑操作

OR 或

NOT 求反

EOR 异或

TES 测试

测试指令的条件;根据结果设置标志

COM 比较

对两个操作数进行逻辑或算术比较;根据结果设置标志

设置控制变量

为保护目的,中断管理,时间控制等设置控制的指令

SHI 移位

左(右)移位操作数,一端引入常数

ROT 循环移

左(右)移位操作数,两端环绕

控制传递

JMP 无条件转移

无条件转移;以指定地址装入PC

JMPX 条件转移

根据测试条件,将指定地址装入PC,或什么也不做

JMPC 转子

将当前程序控制信息放到一个已知位置,转移到指定地址

RET 返回

由已知位置内容替代PC 和其他寄存器的内容

3. 精简指令系统

RISC指令系统特点有:

①选取使用频率最高的一些简单指令,指令条数少;

②指令长度固定,指令格式种类少,寻址方式种类少;

③只有取数/存数指令访问存储器,其余指令的操作都在寄存器之间进行。

 4.总结

 

 

七、ARM 汇编语言

      汇编语言是计算机机器语言(二进制指令代码)进行符号化的一种表示方式,每一个基本汇编语句对应一条机器指令。嵌入式处理机ARM的汇编语言如表4-5所示,其中操作数使用 16 个寄存器(r0,r1~r12,SP,Ir,PC),230个存储字(字节编址,连续的字的地址之间相差4)。

ARM汇编语言

指令

类别

指令

示例

含义

说明

算术

运算

ADD r1,r2,r3

r1=r2+r3

三寄存器操作数

SUB r1,r2,r3

r1=r2-r3

三寄存器操作数

数据传送

取数(字)至寄存器

LDR r1,[r2,#20]

r1=存储单元[r2+20]

内存单元至寄存器字传送

自寄存器存数(字)

STR r1,[r2,#20]

存储单元[r2+20]=r1

寄存器至内存单元字传送

取半字数至寄存器

LDRH r1,[r2,#20]

r1=存储单元[r2+20]

内存单元至寄存器半字传送

取半字带符号数至

寄存器

LDRHS r1,[r2,#20]

r1=存储单元[r2+20]

内存单元至寄存器半字带符

号数传送

自寄存器存半字数

STRH r1,[r2,#20]

存储单元[r2+20]=r1

寄存器至内存单元半字传送

取字节数至寄存器

LDRB r1,[r2, #20]

r1=存储单元[r2+20]

内存单元至寄存器字节传送

取字节带符号数至

寄存器

LDRBS r1,[r2,#20]

r1=存储单元[r2+20]

内存单元至寄存器字节带符

号数传送

自寄存器存字节数

STRB r1,[r2,#20]

存储单元[r2+20]=r1

寄存器至内存单元字节传送

交换

SWP r1,[r2,#20]

存储单元[r2+20]与 r1 互换

自动交换存储单元和寄存器

传送

MOV r1,r2

r1=r2

寄存器间拷贝

逻辑运算

AND r1,r2,r3

r1=r2&r3

三寄存器操作数,比特间相与

ORR r1,r2,r3

r1=r2|r3

三寄存器操作数,比特间相或

MVN r1,r2

r1=~r2

双寄存器操作数,比特取反

逻辑左移

(可选操作)

LSL r1,r2,#10

r1=r2<<10

逻辑左移,位数为常数

逻辑右移

(可选操作)

LSR r1,r2,#10

r1=r2>>10

逻辑右移,位数为常数

条件转移

比较

CMP r1,r2

条件标志=r1-r2

用于条件转移的比较操作

根据EQ,NE,LT, LE,GT,GE,LO, IS,HI,HS,VS,

VC,MI,PL 转移

BEQ 25

若(r1==r2),则转移至

PC+8+100

条件测试:相对于PC 转移

无条件转移

转移(无条件)

B 2500

转移至PC+8+10000

转移

转移并链接

BL 2500

R14=PC+4;

转移至PC+8+10000

用于子程序调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Java]JSTL标签库

EL表达式https://blog.csdn.net/m0_71229255/article/details/130173486?spm1001.2014.3001.5501 JSTL标签的使用 Java Server Pages Standard Tag Libray(JSTL): JSP标准标签库&#xff0c;是一个定制标签类库的集合&#xff0c;用于解决一些常见的问题&#xff0c;例如迭代…

【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 建模方案及代码实现

更新信息&#xff1a;2023-4-15 更新了代码 【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 1 题目 电商物流网络由物流场地&#xff08;接货仓、分拣中心、营业部等&#xff09;和物流场 地之间的运输线路组成&#xff0c;如…

Java项目架构分层改造-项目亮点

服务分层改造 时间操作人员2023年04月12日23:04:00创建文档Cheems 原始项目结构 所有文件糅杂在一起&#xff08;大多数公司如此&#xff09;&#xff0c;没有分层开&#xff0c;功能增加代码复杂不清晰 分层改造后 先确定思路&#xff0c;后续把功能搬过来即可&#xff01;&…

关于GNSS技术介绍(一)

什么是GNSS&#xff1f; GNSS的全称是全球导航卫星系统&#xff08;Global Navigation Satellite System&#xff09;&#xff0c;它是泛指所有的卫星导航系统&#xff0c;包括全球的、区域的和增强的。GNSS是覆盖全球的自主地利空间定位的卫星系统&#xff0c;用于导航与定位…

Stable Diffusion成为生产力工具(四):制作食品安全PPT所用的相关图片png、图标icon

S&#xff1a;你安装stable diffusion就是为了看小姐姐么&#xff1f; I &#xff1a;当然不是&#xff0c;当然是为了公司的发展谋出路~~ 预先学习&#xff1a; 安装webui《Windows安装Stable Diffusion WebUI及问题解决记录》。运行使用时问题《Windows使用Stable Diffusion时…

【C语言】 数据的存储 -- 数据类型介绍 -- 存储 -- 浮点型在内存中的存储,很详细也很重要,不明白的一定要看

目录 1、数据类型介绍 1.1 类型的基本归类 2、整型在内存中的存储 2.1 原码、反码、补码 2.2 大小端介绍 2.3 练习 3、浮点型在内存中的存储 3.1 举一个例子 3.2 浮点数存储规则 *************************************************正文开始*************************…

一文了解MongoDB的各种部署模式

单节点模式&#xff08;Standalone&#xff0c;不推荐用于生产环境&#xff09; standalone模式即单节点模式&#xff0c;指在服务器上只部署一个 mongod 进程用于读写数据。优点是部署简单&#xff0c;可以快速完成部署&#xff0c;缺点是无容灾。只推荐用于日常的开发、测试…

线程(Thread)的三种等待唤醒机制详解

1、为什么需要线程的等待和唤醒 线程的等待唤醒机制是一种经典的“生产者和消费者”模型。例如食品加工厂&#xff0c;食品加工人员和原料补给人员&#xff0c;在有充足原料时&#xff0c;补给人员是在等待&#xff0c;等到原料不够时&#xff0c;食品加工人员通知补给人员&am…

linux实时性分析

什么是实时操作系统 操作系统的实时性是指执行一个特定任务的时间是确定的和可预测的&#xff0c;这个任务执行时限需要考虑任何的情况&#xff0c;包括最恶劣的情况。或者说操作系统能够在规定的时间点内完成指定的任务操作&#xff0c;一旦超过这个时间点会对整个系统带来不…

【探花交友】day01—项目介绍与环境搭建

目录 1、项目介绍 1.1、功能列表 1.2、项目背景 1.3、功能概述 1.4、技术方案 1.5、技术解决方案 2、前后端分离 2.1、前后端分离的概述 2.2、YAPI介绍 3、开发工具 3.1、虚拟机配置 3.2、Android模拟器 3.3、调试工具PostMan 4、环境搭建 4.1、MYSQL数据库 4.…

【JAVA程序设计】(C00127)基于SSM+vue开发的音乐播放管理系统-有文档

基于SSMvue开发的音乐管理系统-有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架vue以及html前台的开发的音乐管理系统共分为二个角色&#xff1a;管理员、用户 管理员角色包含以下功能&#xff1a; 登录、个人中心&#xff08;修改密码、个人信息修改&am…

溯源取证-内存取证 高难度篇

今天的场景依然是windows场景&#xff0c;只不过此次场景分为两个镜像&#xff0c;本次学习主要学习如何晒别钓鱼邮件、如何提取钓鱼邮件、如何修复损坏的恶意文件、如何提取DLL动态链接库文件 本次需要使用的工具&#xff1a; volatility_2.6_lin64_standalone readpst clams…

c++11 标准模板(STL)(std::unordered_multimap)(十三)

定义于头文件 <unordered_map> template< class Key, class T, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator< std::pair<const Key, T> > > class unordered…

交互式电子沙盘数字沙盘大数据系统开发第8课

交互式电子沙盘数字沙盘大数据系统开发第8课 这次我们完成的功能为拖动一个外部的UI对象到球球上&#xff1a; private void Button_PreviewMouseMove(object sender, MouseEventArgs e) { if(e.LeftButton MouseButtonState.Pressed) DragDr…

Vue简易便签实现

Vue简易便签实现 html部分 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Comp…

ChatGPT这么强,你该怎么办?

总编说&#xff1a;《生命3.0》给未来选择工作的人提出的建议显得更加重要。泰格玛克认为&#xff0c;未来选择工作前需要询问三个问题&#xff1a;是否需要与人打交道&#xff0c;运用社交智慧&#xff1f;是否需要创造力&#xff0c;解决复杂问题&#xff1f;是否需要在不确定…

leetcode1306.跳跃游戏

跳跃游戏 -这里有一个非负整数数组 arr&#xff0c;你最开始位于该数组的起始下标 start 处。当你位于下标 i 处时&#xff0c;你可以跳到 i arr[i] 或者 i - arr[i]。 请你判断自己是否能够跳到对应元素值为 0 的 任一 下标处。 注意&#xff0c;不管是什么情况下&#xff…

不会吧?该不会还有企业没实现员工赋能吧!要我说,选低代码就对了!

员工作为企业的重要生产力要素&#xff0c;员工赋能一直是企业经营者重点关注的领域。 在大部分企业经营实践中&#xff0c;员工赋能由人力资源部门负责&#xff0c;赋能的主要形式是集中培训&#xff0c;其结果往往是业务繁忙时&#xff0c;人力组织难度大、业务部门参与意愿低…

深度剖析JVM三个面试常考知识点

目录 &#x1f433;今日良言:只要你足够努力,生命都会庇佑你 &#x1f407;一、JVM内存区域划分 &#x1f407;二、类加载过程 &#x1f407;三、垃圾回收机制(GC) &#x1f433;今日良言:只要你足够努力,生命都会庇佑你 &#x1f407;一、JVM内存区域划分 先来了解一下什…

MySql的sql_mode

文章目录简介查看命令配置文件设置命令配置文件常用的模式ONLY_FULL_GROUP_BYNO_AUTO_VALUE_ON_ZEROSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTIONPIPES_AS_CONCATANSI_QUOTES专栏目录请点击 简介 他是…