计算机组成原理——第四章指令系统(上)

news2024/11/16 5:59:43

提示:待到秋来九月八,我花开后百花杀

文章目录

  • 前言
  • 4.1.1 指令格式
  • 4.1.2 扩展操作码指令格式
  • 4.2.1 指令寻址
  • 4.2.2 数据寻址
  • 4.2.3 偏移寻址
  • 4.2.4 堆栈寻址
  • 汇总


前言

通过第二章我们学习了运算器是如何进行加减乘除,移位运算操作的,通过第三章学习了数据是如何存放于各种各样的存储器当中的,CPU又是如何从存储器中取走数据的,之前我们说过控制器是控制各种各样的部件,协调部件进行工作的,这一章主要是说控制器需要的指令如何设计


提示:以下是本篇文章正文内容,下面案例可供参考

4.1.1 指令格式

指令
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位,一台计算机的所有指令的集合构成该计算机的指令系统,也称为指令集,一个计算机只能执行自己的指令系统中的指令,不能执行其他系统的指令
一条指令通常要包括操作码字段和地址码字段两个部分,并且一个指令中可能包含多个地址码,根据地址码的数目不同,可以将指令分为零地址指令,一地址指令,二地址指令
零地址指令
1,不需要操作数,如空操作,停机,关中断等指令
2,堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压会栈顶,(后缀表达式)
一地址指令
1,只需要单操作数,如加一,减一,取反,求补等
指令含义:OP(A1)->A1 完成一条指令需要三次访存,取指->读A1->写A1
2,需要两个操作数,但是其中一个操作数隐含在某个寄存器,如隐含在ACC中
指令含义:(ACC)OP(A1)->ACC 完成一个指令需要两次访存,取值->读A1 ,这里因为不需要再放回数据,而是放回到ACC 所以少了一次访存
二,三地址指令
请添加图片描述
四地址指令
请添加图片描述
指令字长
一条指令的总长度(可能会变)
我们所说的半字长指令,单字长指令,双字长指令是说是机器字长的多少倍,指令字长会影响取指令所需要时间,如机器字长=存储字长=16bit,则取一条双字长指令需要两次访问内存
定长指令字结构:指令系统中所有指令的长度都相同
变长指令字结构:指令系统中各种指令的长度不等
按操作码长度进行分类
请添加图片描述
按操作类型分类
转移操作本质上来说就是实现的程序执行流的变化,如if else 这个时候就不是顺序的 有可能会发生跳转,其实也就死改变PC的值
请添加图片描述
本节回顾
请添加图片描述

4.1.2 扩展操作码指令格式

我们讲的扩展操作码指令格式是定长指令字结构,可变长操作码
CPU读入是直接读入16位的但是根据前n位1的个数来确定式几位地址指令,如下图前四位全1 则是二地址指令,前六位是1 则是一地址指令,前11位全1 则一定是零地址指令
请添加图片描述
请添加图片描述
二地址12条中大于1011的数还剩下1100,1101,1110 ,1111,你会发现这四个数都是11 开头的,所以加下来如果前六个都是全一的也就超过来二地址指令的范围,后面四bit又是一个地址,所以就留下了中间的六位用来表示操作指令,同样的若是比111101 大的也就是111110 此时前11位就是全1的,后面留有五位就是可以表示32种操作,
请添加图片描述
指令操作码
请添加图片描述

4.2.1 指令寻址

顺序寻址
这一节主要探讨指令是如何确定下一条指令的存放地址(始终由程序计数器PC给出),指令寻址可分为顺序寻址和跳跃寻址,因为有的是采用变长指令字结构的话,此时PC简单的加1 肯定是不行了,若是主存按照字节编址主存按字节编址,也就以为着每一个指令占据两个地址,则此时的PC应该是加2,若是采用变长指令字结构,读入一个字,根据前面的操作码,来确定是几地址指令,由此来判断此条指令的总字节数n 修改PC的值,此时也就是(PC)+n->PC,所以这个n 是根据指令字长和系统是按照字编址还是按照字节编址来确定的

跳跃寻址
由转移指令指出,如这里的JMP,类似C语言中的goto语句
请添加图片描述
本节回顾
请添加图片描述

4.2.2 数据寻址

观察上图你会发现上面是从0地址开始的,但是若是不从0开始 此时若是依然JMP 跳转到7这样不是很明显是错的吗,所以也就有了数据寻址:确定本条指令的地址码指明的真实地址,接下来我们会学习十种数据寻址的方式,然后知道用那种方式来解释这种地址码的含义,通常我们可以在地址码的前面加上这样的几个bit位,这里有十种,也就需要四个bit位便足够了,如这里我们中间加上几个寻址特征来确定寻址方式,若是有多个地址 自然每一个地址的方式也可能不同,这也就有可能有多种寻址特征、
实际应用中,往往是多种寻址方式复合使用
直接寻址

请添加图片描述
间接寻址
其实也就是相当于指针的形式,(A)依然是一个地址,若是真实的地址则是一次间址,若是(A)需要在看((A))则是二次间址
请添加图片描述
寄存器寻址
这个地址码指向的不是某一个内存单元而是指向了某一个寄存器,CPU会有许多的寄存器,每一个寄存器都有一个编号,直接去指向的这个寄存器找就可以了
请添加图片描述
寄存器间接寻址
比起之前我们提到的基于主存的间接寻址来说,这一次间接找地址的过程是不需要访存的,因此更快
请添加图片描述
隐含寻址
有的指令显式的给出一个地址,另外一个地址被隐藏的银隐含于ACC

请添加图片描述
立即寻址
直接寻址放的式操作数的地址,而立即寻址则存放的是操作数,寻址特征中我们写了一个# 号也就意味着后面跟的形式地址就是一个立即数,
请添加图片描述

4.2.3 偏移寻址

以某个地址作为起点 形式地址视为偏移量,这节我们主要学习三种,相对寻址(以程序计数器PC所指地址作为起点),基址寻址(以程序的起始存放地址作为起点),变址寻址(程序员自己决定从哪里作为起点)
基址寻址
优点是便于程序“浮动”方便实现多通道程序并发运行,所谓浮动就是指可以从内存中任何一个地址作为一个起始地址,每一个程序运行之前CPU的基址寄存器的值通常都是存放于程序控制块PCD中的,基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定,在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量),普通程序员可以使用汇编语言来直接操纵某一个通用寄存器中的值,读或者写都行,但是当某一个寄存器被指定作为一个基址寄存器后,那么这个寄存器中的值也是不能修改的,其内容会由操作系统进行管理,同时由于基地址的位比较长,也可扩大寻址范围
请添加图片描述
请添加图片描述
变址寻址
这种变址寻址在循环中有很大作用,在数组的处理过程中,可设定A为数组的首地址,不断改变变址寄存器ix的内容,便可很容易的形成数组种任一数据的地址,特别适合编制循环程序
请添加图片描述
相对寻址
是相对于下一个指令地址的偏移量,这个偏移量可正可负,用补码表示,因为当cpu取出一条指令之后,pc一定是自动加n的,自动指向下一条指令,优点:操作数的地址不是固定的,它随着PC的值变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动,(一段代码再程序内部浮动,直接寻址的浮动是整段程序的浮动,而这里是一段代码的浮动)但是这里也就有了一个问题,若是修改程序段,数组始址不再是存放于7这个位置,这里一种解决方法就是将数据段,程序段分开
请添加图片描述
请添加图片描述
本节回顾
注意这里的偏移量是相对于下一个指令的偏移量,这里两个数进行比较是通过相减,相减的结果结果信息会记录再程序状态字寄存器中PSW,根据PSW的某几个标志位进行条件判断,来决定是否转移
请添加图片描述

4.2.4 堆栈寻址

堆栈指针存放于一个寄存器中,也就意味着我们不需要一个显式的操作地址,它的操作地址是隐藏于SP这个寄存器中的
软堆栈:从主存中划分一部分区域作为,也就意味着弹出一个元素 或压入一个元素都是需访问主存,所以没有直接放在寄存器的快
出栈时之间EA(有效地址)便可,但是入栈的时候需要先加一或者减一才能入栈
请添加图片描述

汇总

取值的时候是需要访存的,但是这里指的是指令执行期间
请添加图片描述

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

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

相关文章

【密码算法 之七】GCM 浅析

文章目录1. 概述1.1 GHASH1.3 GCTR2. GCM 加密3. GCM 解密4. 总结在我的另一篇博客【密码算法 之三】分组密码工作模式 (ECB \ CBC \ CFB \ OFB \ CTR \ XTS)浅析 中已经详细的介绍了对称算法(也称为“分组密码算法”)的各种工作模…

排序算法(一)

一、排序算法 排序算法就是将数组按照数值或者字母序排列,常用的排序算法有很多,如下: 详细细节可以直接看维基百科:https://zh.wikipedia.org/zh-cn/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95 C的库中实现了常用的排序算法&#x…

Linux_红帽8学习笔记分享_4

Linux_红帽8学习笔记分享_4 文章目录Linux_红帽8学习笔记分享_41.用户管理useradd命令的使用1.1使用useradd添加用户1.2 Linux系统底层的四个连锁反应2.账户信息文件/etc/passwd中七个字段的含义3.组信息文件/etc/group中四个字段的含义4.影子文件/etc/shadow两个字段的含义5.相…

C++STL——map与set介绍及使用

map与set介绍及使用关联式容器健值对setmultisetmapmultimap关联式容器 之前我们学的list,vector等等是序列式容器,这里的set和map和之后的哈希表都是关联式容器,比如说搜索二叉树我们想插入一个值,不能随意的插入,因…

【JVM】JVM之执行引擎

文章目录前言名词解释机器码指令指令集汇编语言高级语言字节码虚拟机&物理机前端编译器&后端编译器JVM之执行引擎执行引擎是如何工作的?解释器即时编译器(JIT)分层编译策略虚拟机执行模式热点代码&探测方式1)方法调用…

Android 屏蔽锁屏界面上的通知显示

一. 前言 [定制需求描述]:在插入SD后, 锁屏状态下, 去掉提示“SD卡可用于传输照片和媒体文件” 需求拆解: 要求正常显示在SystemUI下拉状态栏, 只需要屏蔽在锁屏状态下的通知. 二. 发送通知 首先来找找这个字符串"可用于传输照片和媒体文件" 是在/f…

buuctf_随便注

根据题目猜测这是一道SQL注入的题目输入一个单引号触发报错,根据报错信息得知闭合条件就是一对单引号继续构造表达式,得出一共包含两个回显位构造表达式求出当前数据库的名称,但是根据回显数据和实践来看,此题是对select进行了过滤…

【软件设计师12】数据流图DFD

数据流图DFD 必考下午第一道大题!!! 基本概念、数据字典、数据平衡原则 1. 基本概念 顶层图是系统,再看中间跟外部数据的交换流不变,内部细化,最底层图进一步细化 数据存储在题干描述时,要么…

一文弄清-BP的过拟合与validationCheck

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com BP神经网络的训练经常会遇到过拟合的情况,导致模型在训练效果上很好但预测效果差 正因如此,matlab工具箱引入validationCheck来防止BP神经网络走向过拟合 本文介绍过拟合是…

SOTIF 预期功能安全ISO21448介绍、功能安全标准ISO26262 与若干安全标准的适用范围和开发流程映射

SOTIF 预期功能安全ISO21448介绍、功能安全标准ISO26262 与若干安全标准的适用范围和开发流程映射 ISO 21448 中规定了预期功能安全的设计开发流程图, 如下图所示。首先从 第 5 条出发, 进行规范和设计。该部分是将进行整车级、 系统级、 组件级等功能规…

快速了解Depop注册新方法,轻松一分钟入驻

东哥我是在几个月前第一次认识depop这个平台,原因是当时主要是让手底下的员工去操作,团队毕竟涉及到的平台都比较多,我就没那么多精力放在depop上,但却意外发现这个平台给我们带来很不错的业绩!所以东哥今天打算给大家…

阿里p8大牛三年整理出全网最全的5万字的《Java核心知识手册》

利用空余时间整理了一份《Java核心知识手册》,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间。 前段时间,朋友圈分享了这份这份面试手册的初稿,在几位同学的提议下,对手册进…

线程夯死的排查及解决

最近做的业务一直是和第三方交互的业务,为了加快速度,基本上都是采用多线程,然而时不时总是发生一些推送任务莫名的卡死,知道前几天的一次发现,让我开始了线程的排查之路,希望对大家的有一定的启发和借鉴一…

使用Mybatis-plus在xml文件中实现自己定义的sql逻辑

1、创建数据库表(前提安装配置好Mysql,并且会使用) DROP TABLE IF EXISTS USER; CREATE TABLE USER (id BIGINT(20) NOT NULL COMMENT 主键ID,NAME VARCHAR(30) NULL DEFAULT NULL COMMENT 姓名,age INT(11) NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50) NUL…

【C51单片机】8-温湿度监测显示系统(LCD1602、温湿度传感器、IIC、OLED)

1.LCD1602概述 LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 1602 即 32 字符(16列两行) //硬件接线 //电源 VSS -- GND VDD -- 5V //对比度 VO -- GND //控制线 RS -- P1.0 RW -- P1.1 E -- P1.4 //背光灯 A -- 5…

华为VRRP配置

拓扑图 PC1电脑配置 指定ip192.168.10.1 网关192.18.10.254 LSW1交换机配置 ge0/0/1 access &#xff0c;vlan10 ge0/0/2 trunk ge0/0/3 trunk <Huawei>system-view Enter system view, return user view with CtrlZ. [Huawei]undo info-center enable Info: Informa…

基础练习 闰年判断

def is_leap_year(year):if year % 4 0 and year % 100 ! 0 or year % 400 0:print("yes")else:print("no")if __name__ __main__:is_leap_year(int(input()))

题解,git的使用,MySQL与JDBC的使用(上)

题解 引入&#xff1a;tarjan算法&#xff0c;强连通分量&#xff0c;割点&#xff0c;割边&#xff0c;点双联通分量&#xff0c;边双联通分量 P4961 小埋与扫雷 思路&#xff1a;分别求出数字和空格相加即可 #include<iostream> using namespace std; const int X[8]…

图片与视频相关冷知识

目录 色彩的相关概念 色深 色相与饱和度 色调 冷色调与暖色调 色温 白平衡 白平衡偏移 色阶 色阶中的直方图 对比亮度 视频相关概念 像素数 分辨率 逐行扫描与隔行扫描 对比度 高对比度与低对比度 清晰度&#xff08;也称锐度&#xff09; 锐化 锐化与锐度…

果推断16--市场营销中资源分配问题的直接异质因果学习

题目&#xff1a;市场营销中资源分配问题的直接异质因果学习 Direct Heterogeneous Causal Learning for Resource Allocation Problems in Marketing 论文链接&#xff1a;https://export.arxiv.org/pdf/2211.15728v2.pdf 摘要&#xff1a;资源分配是市场营销中一类重要的决…