您现在的位置是:首页 > 正文

指令

2024-01-30 23:07:07阅读 0

指令

指令的定义

指令又称为机器指令,是指计算机执行某种操作的命令,是计算机运行的最小功能单位,一台计算机的所有指令的集合构成的指令系统,又称为指令集
一台计算机只能够执行自己指令系统中的指令,不能够执行其他系统的指令

指令的分类

  1. 微指令:属于硬件,微程序级别的命令
  2. 宏指令:若干条机器指令组成的软件指令,属于软件
  3. 机器指令:介于宏指令和伪指令之间

一条指令可以完成一个独立的算数运算或者逻辑运算

性能要求

  1. 完备性:指令系统提供的指令够用,不用依赖软件实现,完备性要求指令系统丰富、功能齐全、使用方便
  2. 有效性:指令系统编写的指令系统所编写的程序能够高效率的运行,高效性表现在程序的占据内存的存储空间小、执行速度快
  3. 规整性:指令系统的对称性、匀齐性、指令格式和数据格式的一致性
  4. 兼容性:各种机种之间具有相同结构基本结构和共同的基本指令集,使得各机种上的软件可以统用

低级语言和硬件结构的关系

低级语言依赖于计算机的硬件结构和指令系统

低级语言的问题:依赖于机器、编写程序困难、编制所需时间较长、

低级语言的优点:执行时间短、编译过程中对计算机资源的需求较低

指令格式

指令字:表示一条指令的机器数
指令结构:操作码字段OP+地址码字段A

操作码:说明计算机执行哪种操作,是指令中不可缺少的组成部分
操作码字段的位数取决于计算机指令系统的规模
一般来说,一个n位操作码最多对应 2 n 2^n 2n个指令

操作数:各种操作的对象,通常操作指令均有一个或者两个的操作数

指令格式

  1. IN,AX,端口地址
  2. OUT,端口地址,AX

地址码
分类:

  1. 三级地址指令:有三个指定的通用寄存器的地址
  2. 二级地址指令:有两个参与操作数的内存的地址放在寄存器中
  3. 一级地址指令:指定一个操作数,另外一个操作数地址是隐含的
  4. 零地址指令:只有操作码

格式:

  1. 三级地址指令:OP+A1+A2+A3,将运算结果保存在A3
  2. 二级地址指令:OP+A1+A2,将运算结果保存在A1
    1. SS:存储器——存储器,速度最慢
    2. RS:存储器——寄存器
    3. RR:寄存器——寄存器,速度最快
  3. 一级地址指令:OP+A1,结果存储在A1中
  4. 0级地址指令:OP,空操作

基本概念

指令字长度:一个指令字中包含的二进制的位数
机器字长:计算机能够直接处理的二进制数据的位数,决定了计算机运算精度
单字长指令=机器字长的指令
半字长指令=半个机器字长的指令
双字长指令

多字长指令的优缺点

多字长指令
优点
提供足够的地址来解决访问内存单元的寻址问题
缺点
必须多次访问内存来取出一整条指令,降低了CPU的运算速度,占用了更多的存储空间

等字长
优点
各种指令字的长度是相同的,指令字简单且字长度不变

非等字长
优点
结构灵活,能够充分利用指令长度,但是指令的控制较为复杂

指令助记符

每个指令通常用三个或者四个英文字母的缩写表示

对各种指令的使用格式进行了解

典型指令 指令助记符 二级制操作码
加法 ADD 001
减法 SUB 010
传送 MOV 011
跳转 JMP 100
转子 JSR 101

操作数的类型

  1. 一般数据类型
    1. 地址数据:无符号整数
    2. 数值数据:定点整数、浮点数
    3. 字符数据:文本数据或者字符串
    4. 逻辑数据:一个单元由若干个二进制位项组成
  2. Pentium数据类型
  3. Power PC数据类型

指令和数据的寻址方式

寻址的时机:

  1. 冯诺·依曼型:指令寻址和数据寻址是交替进行的
  2. 哈弗型:指令寻址和数据寻址是独立进行的

操作数或者指令字写入或者读出的方式

  1. 地址指定
  2. 相联存放
  3. 堆栈存取

寻址方式:当采用地址指定的方式的时候,形成操作数和指令地址的方式

寻址方式:

  1. 指令寻址,较简单
  2. 数据寻址,较复杂

指令的寻址方式

  1. 顺序寻址方式
  2. 跳跃寻址方式

操作数的来源:

  1. 指令中的地址码部分直接给出操作数
  2. 操作数存放在CPU的通用寄存器中
  3. 内存的数据区域
    1. 有效地址:指令中直接给出操作数的实际访存地址
    2. 形式地址:在地址字段中给出

操作数的位置
9种操作数寻址的方式
寄存器寻址:操作数存放在相应的寄存器中,优点:
立即寻址:数据就包含在指令中,特点:
余下的操作数均在内存当中
隐含寻址:指令中隐含着操作数的地址,特点:
直接寻址:操作数在存储器中的地址,特点:简单直观、便于硬件实现
间接寻址:操作数存放在间接地址所指向的有效地址中所指向的地址中,感觉和二级指针比较像
寄存器间接寻址:操作数存放在主存储器中,操作数地址放在的某一个寄存器中
偏移寻址:两者相加后为操作数的有效地址

  1. 相对寻址
  2. 基址寻址
  3. 变址寻址
方式 算法 优点 操作数的位置 缺点
隐含寻址 无存储器访问 操作数在指定存储器内 数据范围有限
立即寻址 操作数=A 无存储器访问 操作数符有限
直接寻址 EA=A 简单 地址范围有限
间接寻址 EA=(A) 大的地址范围 多重存储器访问
寄存器寻址 EA=R 无存储器访问 地址范围有限
寄存器间接寻址 EA=® 大的地址范围 额外存储器访问
偏移寻址 EA=A+® 灵活 复杂
段寻址 EA=A+® 灵活 复杂
堆栈寻址 EA=栈顶 无需给出存储器地址 需要堆栈指示器

典型指令

指令的分类

  1. 数据传送指令

    1. 一般传送指令:MOV、AX、BX
    2. 数据交换指令
    3. 堆栈操作指令
  2. 运算类指令

    1. 算数运算指令
    2. 逻辑运算指令
    3. 移位指令
  3. 程序控制类指令:控制程序执行的方向

  4. 输入、输出指令、字符串处理指令、特权指令、其他指令

RISC指令系统

CISC指令系统的缺点:指令种类太多、指令格式不规范、寻址方式太多
RISC优化了CICS的缺点

Power PC机的5种指令

网站文章

  • js基础篇:3、浅谈js的七种数据类型

    js的数据类型js有七种数据类型,其中又可以划分为基本数据类型(Number、String、Null、Boolean、undefined、Symbol(ES6新增))和引用数据类型(Object)。基本数据类型NumberStringNullBooleanundefin...

    2024-01-30 23:07:00
  • SSH实例(简单地增删改查功能) 热门推荐

    SSH实例(简单地增删改查功能) 热门推荐

    在网上看到一篇写的很不错的关于SSH 整合实现简单的增删改查功能的实例。 因为也是初次使用SSH框架,如有不足,请多指教。 先看一下我们完整的工程目录: 好了 我们废话不多说 直接上操作: 1.(1.)Dept 我们的Bean 包名:com.bdqn.entity(根据自己的习惯定义就可以) package com.bdqn.entity; import java.io...

    2024-01-30 23:06:53
  • JavaScript Array filter() 方法 筛选过滤去重

    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。通过一定的条件逻辑可以筛选过滤去重。

    2024-01-30 23:06:24
  • 后端框架学习笔记

    后端框架学习笔记

    1.运行过程 WishList(Domain)-->WishListMapper(DAO)-->WishListService(Service)-->WishListControll...

    2024-01-30 23:06:16
  • Windows下的C/C++的远程调试

    Windows下的C/C++的远程调试

    1. 问题 程序员经常会面临,开发电脑上一切运行正常,但是在测试电脑上却死活都有问题。一般情况下,我们可加一些弹窗或是打印Log来进行分析调试。但是如果问题复杂时,以上方法调试还是比较麻烦。如果可以像...

    2024-01-30 23:06:07
  • spark-各版本特性

    0.3 Save Operations You can now save distributed datasets to the Hadoop filesystem (HDFS), Amazon S3...

    2024-01-30 23:05:59
  • 插入排序小结

    最近上心找实习,把博客落下了,这不行啊 抓住3月的尾巴,赶紧更新 预计会把排序算法总结一下,手边有现撸的代码 其他的(二叉树、图等)还需要看情况,要找OJ去刷题(只怪先前没积累,还是要过笔试关的),或者修补一下其他短板,总结性的工作要靠后了。直接插入排序思想:从未排序部分的数组中找到第一个元素,与已经排序(升序)部分由后向前比较,找到(有后向前)第一个比选中元素小的位置(或者说是

    2024-01-30 23:05:30
  • 控制流图、圈复杂度 热门推荐

    控制流图、圈复杂度 热门推荐

    继续上次的测试作业,学习完程序插装的概念,今天学习测试的静态分析方法:绘制控制流图与计算圈复杂度。 一、控制流图: 一个过程或程序的抽象表现,常以数据结构链的形式表示。 二、圈复杂度: 复杂度越高,软件质量就越低,测试就越困难。 圈复杂度(McCabe),其复杂度V(G)可按以下公式计算: V(G) = E – n + 2 其中,E为图G中的边数,

    2024-01-30 23:05:23
  • MT6701磁编码器使用指南,14Bit单圈绝对值,I2C stm32 HAL库读角度,兼容AS5600

    MT6701磁编码器使用指南,14Bit单圈绝对值,I2C stm32 HAL库读角度,兼容AS5600

    MT6701是麦歌恩(MagnTek)公司的磁性角度传感器芯片,提供14Bit 0~360°单圈绝对角度检测,拥有等多种信息输出方式,还可根据磁场强度的瞬时变化提供非接触式按压检测功能。能够以较低的成...

    2024-01-30 23:05:16
  • jcg 836 固件_JCG Studios – ArkDroid Beta发布

    jcg 836 固件_JCG Studios – ArkDroid Beta发布

    jcg 836 固件 大家好, 最近几个月,我们一直在忙于开发我们的第一个Android游戏项目。 方舟机器人我们就是所谓的“进化的碎石机”; 一个Arkanoid克隆游戏,它以电影故事和RPG精髓丰富了经典的“打破常规”游戏世界! 可以肯定的是,我们在Android平台上进行的首次游戏开发工作中学到了很多东西,并且打算与Java Code Geeks社区的其他成员共享所有“多汁的”细节! ...

    2024-01-30 23:04:49