机组 指令系统

news2024/11/24 0:01:23

机器指令

机器指令:每一条机器语言的语句

指令系统:全部机器指令的集合

指令的一般格式

指令由操作码和地址码两部分组成

操作码

作用:指明该指令要完成的操作

位数:反映机器的操作种类,即机器允许的指令条数

长度:可以是固定的,可以是变化的

  • 固定长度:操作码集中放在指令字的一个字段内,便于硬件设计,指令译码时间短,广泛用于字长较长的、大中型计算机和超级小型计算机以及 RISC
  • 不固定长度:操作码分散在指令字的不同字段,有效地压缩操作码地平均长度,在字长较短地微型计算机中被广泛使用

n 地址指令的操作码的高位不可以复用 n+1 地址指令的操作码

尽量安排指令使用频度高的指令占用短的操作码,对使用频度低的指令可占用较长的操作码,以缩短经常使用的指令的译码时间

地址码

作用:指出该指令的源操作数的地址(一个或两个)、结果的地址以及下一个指令的地址【地址:主存的地址、寄存器的地址、I/O 设备的地址】

四地址指令

(A1)OP(A2)—>(A3)

若地址字段均指示主存的地址,完成一条四地址指令,需访存四次,取指令一次,取操作数两次,存放结果一次

三地址指令

(A1)OP(A2)—>(A3)

后续指令的地址隐含在程序计数器 PC 中

若地址字段均指示主存的地址,完成一条四地址指令 四次访存

二地址指令

(A1)OP(A2)—>(A1) A1 字段既代表源操作数的地址,又代表存放本次运算结果的地址 四次访存

(A1)OP(A2)—>(A2) A2 字段既代表源操作数的地址,又代表中间结果的存放地址 四次访存

(A1)OP(A2)—>ACC 中间结果暂存于累加器 ACC 中 三次访存(取指、取操作数、取操作数 )

一地址指令

(ACC)OP(A1)—>ACC ACC 既存放参与运算的操作数,又存放运算的中间结果 两次访存(取指、取操作数)

零地址指令

零地址指令在指令中无地址码

空操作 NOP、停机 HLT ……这类指令只有操作码

子程序返回 RET、中断返回 IRET ……这类指令没有地址码,其操作数的地址隐含在堆栈指针 SP 中

注意

硬件资源(PC、ACC……)承担指令字中需指明的地址码,在不改变指令字长的前提下,扩大指令操作数的直接寻址范围,缩短指令字长,减少访存次数

地址字段可用来表示寄存器。当 CPU 中含有多个通用寄存器时,对每个寄存器赋予一个编号,便可指明源操作数和结果存放在的寄存器,地址字段表示寄存器也有三地址、二地址、一地址之分,其共同点是,在指令的执行阶段都不必访问存储器,直接访问寄存器,提高机器运行速度 一次访存(取指)

指令字长

决定因素:操作码的长度、操作数地址的长度和操作数地址的个数

不同机器的指令字长不同

操作

操作数类型

操作类型

寻址方式

定义:指确定本条指令的数据地址以及下一条将要执行的指令地址的方法

与硬件结构紧密相关,直接影响指令格式和指令功能

分类:指令寻址、数据寻址

指令寻址

分类:顺序寻址、跳跃寻址

顺序寻址:通过程序计数器 PC +1,自动形成下一条指令的地址

跳跃寻址:通过转移类指令实现

数据寻址

数据寻址方式种类多,在指令字中必须设一字段指明属于哪一种寻址方式

形式地址 A:指令的地址码字段,通常不表示操作数的真实地址

有效地址 EA:操作数的真实地址,由寻址方式和形式地址共同确定

立即寻址

特点:操作数本身设在指令字内,形式地址 A 不是操作数的地址,而是操作数本身,称为立即数,数据采用补码形式存放

“#”表示立即寻址特征标记

优点:只要取出指令,便可立即获得操作数,指令执行阶段不必再访问存储器

缺点:A 的位数限制了这类指令所表述的立即数的范围

访存:一条指令的执行,不考虑存结果,访存一次(取指令)

直接寻址

特点:指令字中的形式地址 A 是操作数的真实地址 EA,即 EA=A

优点:寻找操作数比较简单,不需要专门计算操作数的地址,在指令执行阶段对主存只访问一次

缺点:A 的位数限制了操作数的寻址范围,必须修改 A 的值,才能修改操作数的地址

访存:一条指令的执行,不考虑存结果,访存两次(取指令,取操作数)

隐含地址

特点:指令字中不明显地给出操作数的地址,其操作数的地址隐含再操作码或某个寄存器中

优点:有利于缩短指令字长

间接寻址

特点:有效地址由形式地址间接提供 EA=(A)

多次间接寻址时,可用存储字的首位标志间接寻址是否结束,当存储字首位为“1”时,标明还需继续访存寻址;当存储字首位为“0”时,标明该存储字即为 EA,存储字的首位不能作为 EA 的组成部分

优点:扩大了操作数的寻址范围【因为 A 的位数通常小于指令字长,存储字长可以与指令字长相等】,便于编制程序

缺点:指令的执行阶段需要访存两次(一次间接寻址)或多次(多次间接寻址),使指令执行时间延长

寄存器寻址

特点:地址码字段直接指出寄存器的编号 EA=Ri ,操作数在由 Ri 所指的寄存器内

优点:因为操作数不在主存中,所以寄存器寻址在指令执行阶段无须访存,减少了执行时间;由于地址字段只需指明寄存器编号,故指令字较短,节省了存储空间

访存:指令执行阶段不需要访存

寄存器间接寻址

特点:Ri 中的内容不是操作数,而是操作数所在主存单元的地址号,即有效地址 EA=(Ri)

访存:比间接寻址少访存一次,指令的执行阶段需要访存

基址寻址

特点:设基址寄存器 BR,其操作数的有效地址 EA 等于指令字中的形式地址与基址寄存器中内容相加,即 EA=A+(BR)

分类:隐式、显式

  • 隐式:在计算机内专门设有一个基址寄存器 BR,使用时用户不必明显指出该基址寄存器,只需由指令的寻址特征位反映出基址寻址即可
  • 显式:在一组通用寄存器里,由用户明确指出哪个寄存器作为基址寄存器,存放基地址

优点:扩大操作数的寻址范围(基址寄存器的位数可以大于形式地址 A 的位数)

基址寻址在多道程序中极为有用,操作系统或管理程序根据主存的使用状况,赋予基址寄存器内一个初始值(基地址),便可将用户程序的逻辑地址转换为主存的物理地址(实际地址),把用户程序安置于主存的某一空间区域

在程序执行过程中,用户不知道自己的程序在主存的哪个空间,用户不可修改基址寄存器的内容,以确保系统安全可靠地运行

变址寻址

特点:有效地址 EA 等于指令字中的形式地址 A 与变址寄存器 IX 的内容相加之和,即 EA=A+(IX)

变址寻址和基址寻址的区别:

  • 基址寻址:主要用于为程序或数据分配存储空间,基址寄存器中的内容通常由操作系统或管理程序确定,在程序的执行过程中其值不可变,而指令字中的 A 是可变的
  • 变址寻址:变址寄存器的内容由用户设定,在程序执行过程中其值可变,而指令字中的 A 是不可变的。变址寻址主要用于处理数组问题,在数组处理过程中,可设定 A 为数组的首地址,不断改变变址寄存器 IX 的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序

变址寻址与其他寻址方式结合:

  • 变址寻址与基址寻址合用:EA=A+(IX)+(BR)
  • 变址寻址与间接寻址合用:形成变址后间址或先间址再变址

相对寻址

特点:有效地址是将程序计数器 PC 的内容(即当前指令的地址)与指令字中的形式地址 A 相加而成,即

EA=(PC)+A

相对寻址常被用于转移类指令,转移后的目标地址与当前指令有一段距离,称为相对位移量,由指令字的形式地址 A 给出,A 称为位移量【A可正可负,通常用补码表示】

若位移量为 8 位,则指令的寻址范围为 (PC)+127~(PC)-128

最大特点:转移地址不固定,可随 PC 值的变化而变

相对寻址可与间接寻址配合使用

堆栈寻址

堆栈寻址要求计算机中设有堆栈

堆栈既可用寄存器组(硬堆栈)实现,也可利用主存的一部分空间作堆栈(软堆栈)

堆栈的运行方式为先进后出和先进先出两种

RISC 技术

RISC 精简指令系统计算机

CISC 复杂指令系统计算机

RISC 主要特点

  1. 选取使用频度较高的一些简单指令以及一些很有用但不复杂的指令,让辅助指令的功能由频度高的简单指令的组合实现 指令系统复杂庞大,各种指令使用频度相差很大
  2. 指令长度固定,指令格式种类少,寻址方式种类少 指令字长不固定,指令格式多,寻址方式多
  3. 只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都在寄存器内完成 可以访存的指令不受限制
  4. CPU 中有多个通用寄存器 CPU中设有专用寄存器
  5. 采用流水线技术,大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时间小于一个时钟周期 绝大多数指令需要多个时钟周期方可执行完毕
  6. 控制器采用组合逻辑控制,不用微程序控制 采用微程序控制器
  7. 采用优化的编译程序 难以用优化编译生成高效的目标代码

紫色是 CISC 的特点

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

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

相关文章

redisTemplate不支持zpopmax,解决方案使用reverseRangeWithScore

在redis客户端可以使用zpopmax redisTemplate不支持zpopmax 解决方案 使用reverseRangeWithScore 接下来我们进行测试 我们要返回最大的value,应该是c import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.a…

挑战100天 AI In LeetCode Day06(热题+面试经典150题)

挑战100天 AI In LeetCode Day06(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-82.1 题目2.2 题解 三、面试经典 150 题-83.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&am…

Python爬虫实战-批量爬取美女图片网下载图片

大家好,我是python222小锋老师。 近日锋哥又卷了一波Python实战课程-批量爬取美女图片网下载图片,主要是巩固下Python爬虫基础 视频版教程: Python爬虫实战-批量爬取美女图片网下载图片 视频教程_哔哩哔哩_bilibiliPython爬虫实战-批量爬取…

本地数据库迁移到云端服务器

工具迁移xtrabackup 创建云服务器——通过云服务器提供的公网地址远程连接XShell——利用迁移工具将数据库从本地迁移到云服务器 (1)创建云服务器 (2)远程连接XShell (3)yum安装mysql (4&…

spider-node-初识

spider-node spider想解决的问题1:业务架构层面2:代码层面3:业务,产品,研发,测试之间4: 系统迭代成本高 spider-node 配置讲解spider-node启动 spider想解决的问题 1:业务架构层面 帮助研发团队…

给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个 给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一

题目描述&#xff1a;给定 n 个整数&#xff0c;求里面出现次数最多的数&#xff0c;如果有多个重复出现的数&#xff0c;求值最大的那个 输入格式 第一行输入一个整数n(1<n100000)&#xff0c;接下来一行输入n个int 范围内的整数 输出格式 输出出现次数最多的数和出现的…

https证书免费申请

JoySSL是一个提供免费HTTPS证书的权威证书颁发机构&#xff08;CA&#xff09;&#xff0c;其证书广泛应用于网站安全领域。JoySSL致力于提供高质量、安全、可靠的HTTPS证书&#xff0c;以满足各种规模网站的需求。 首先&#xff0c;您需要访问JoySSL的官方网站&#xff0c;并…

【C++】stack | queue | priority_queue | deque

一、stack栈 介绍 1.栈是一种特殊的线性表&#xff0c;其元素遵循“后进先出”的原则&#xff0c;即仅允许在在表的一端进行插入、删除操作&#xff0c;这一模式被称为“后进先出”或LIFO&#xff08;last in fisrt out&#xff09;。 2.从底层实现来看&#xff0c;stack是作…

07-MySQL-进阶-锁InnoDB引擎MySQL管理

涉及资料 链接&#xff1a;https://pan.baidu.com/s/1M1oXN_pH3RGADx90ZFbfLQ?pwdCoke 提取码&#xff1a;Coke 一、锁 ①&#xff1a;概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xf…

【AI编程】ai编程插件汇总iFlyCode、codegeex

1、iFlyCode 开发公司&#xff1a;讯飞 支持IDE: VS Code、IntelliJ IDEA、CLion、PyCharm、WebStorm 支持语言: Python、JavaScript、C、Java 下载地址&#xff1a;https://iflycode.xfyun.cn/ iFlyCode 快捷键列表&#xff1a;  Tab 采纳建议  Esc 拒绝建议  Alt\ 主动…

【NetCore】企业微信你消息推送

前言 慢慢脱离一线开发工作,突然接到一个改善提案需要增加类似短信业务消息提醒。考虑到目前已开通企业微信且短信服务一般需要收费,决定采用企业微信消息提醒。 流程 微信等相关的第三方开发大致流程都类似,如下 注册账号账号认证(为了权限,当然企业微信内部应用不需要…

【数据结构与算法】DFA算法-关键词匹配-java案例实现

该算法往往是用于匹配一些敏感词、绝对词等&#xff0c;从一篇文章中快速找到其中包含的关键词。 实现思路&#xff1a; 先读取所有关键词并存入set集合中。再将set中的关键词存入HashMap中&#xff0c;是以每个关键词字顺序存储&#xff0c;key为一个字、value为一个HashMap。…

机器视觉人体跌倒检测系统 - opencv python 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器视觉人体跌倒检测系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&…

frida hook(深入浅出)

Andrax搭建Android渗透测试环境 编译官方frida源码 APP基于Frida脱壳 Frida Hook的使用方法 Frida逆向分析APP实战 魔改frida到绕过检测的思路 配置fridaserver为后台进程 使用frida-net玩转frida-rpc 内置frida hook到Android系统 内置frida-inject工具到手机系统 三…

I/O控制器

一、概述 I/O设备管理-机械部件(I/O硬件设备)电子部件(I/O控制器)接口(设备与控制器间通信媒介) 二、组成 各寄存器间的编址方式&#xff1a; 三、控制方式 1.轮询程序控制 2.中断程序控制 3.直接存储器访问(DMA)

漏刻有时百度地图API实战开发(3)自动获取地图多边形中心点坐标

在百度地图中&#xff0c;多边形覆盖物表示地图上的多边形区域。这些区域可以是封闭的&#xff0c;也可以是开放的。多边形覆盖物通常用于表示地图上的行政区划、地标或任何需要强调的区域。 多边形覆盖物拥有自己的地理坐标&#xff0c;并能随着地图的拖动或缩放而相应地移动…

2023最新最全【Adobe After Effection 2023】下载安装零基础教程【附安装包】

AE2023下载点这里 教学 1.鼠标右击【Ae2023(64bit)】压缩包选择&#xff08;win11系统需先点击“显示更多选项”&#xff09;【解压到 Ae2023(64bit)】。 2.打开解压后的文件夹&#xff0c;鼠标右击【Set-up】选择【以管理员身份运行】。 3.点击【文件夹图标】&#xff0c;…

Scala爬虫如何实时采集天气数据?

这是一个基本的Scala爬虫程序&#xff0c;使用了Scala的http library来发送HTTP请求和获取网页内容。在爬取天气预报信息时&#xff0c;我们首先需要创建一个代理对象proxy&#xff0c;并将其用于发送HTTP请求。然后&#xff0c;我们使用http库的GET方法获取网页内容&#xff0…

Leetcode-LCR 021 删除链表的倒数第 N 个结点

快慢指针&#xff0c;快指针先移动n-1个节点后&#xff0c;慢指针从虚拟头结点出发&#xff08;相当于快慢指针相隔n个节点&#xff09;&#xff0c;快慢指针一起向链表尾依次移动一个结点&#xff0c;当快指针移动到表位时&#xff0c;慢指针正好移到被删除元素的前一个结点&a…

扭矩传感器采用一阶RC滤波

扭矩传感器内部的一阶RC&#xff08;电阻-电容&#xff09;滤波器是一种用于滤除高频噪声和干扰的电路&#xff0c;以确保传感器输出的信号平滑和稳定。这种滤波器通常用于传感器输出信号的处理&#xff0c;以减少测量中的高频噪声。 一阶RC滤波器通常由一个电阻&#xff08;R…