• 前一篇文章分析了指令系统(ISA)的设计方法,这里以IA-32指令系统为例进行分析
  • 前文链接:计算机组成原理(4.1)—— 指令系统设计

文章目录

  • 一、IA-32架构基础
  • 二、操作数类型和表示方式
    • 1. 操作数类型
    • 2. 操作数表示方式
  • 三、指令格式
    • 1. 前缀段
    • 2. 指令段
  • 四、寻址方式
    • 1. 操作数的来源
    • 2. 指令中必须给出的信息
    • 3. 寻址方式
    • 4. 寻址过程
    • 5. 示例
  • 五、MMX指令技术

一、IA-32架构基础

  • 泛指:基于英特尔IA-32架构的32位微处理器
  • 特点:向下兼容
  • 并行化程度:流水线
  • 处理器位数:32
  • 三种工作方式:
    1. 保护方式(包含一种子工作方式:虚拟8086方式)
    2. 实地址方式
    3. 系统管理方式
  • 指令集类型:CISC(IA-32是CISC类型的指令集的典型代表)
  • 寄存器配置
    1. 8个32位通用寄存器

      • 用于存储数据、参与算数逻辑运算、给出存储单元地址
      • 变长寄存器:可以用作32位寄存器,也可拆为16位和8位寄存器使用
      • 详见:IA-32汇编语言笔记(2)—— IA32处理器及其寄存器
    2. 6个段寄存器
      • 段寄存器存放着当前使用的逻辑地址中的段号(实模式下是段值;保护模式下是段选择子),用于获得段起始地址
      • 利用段寄存器存储段起始地址,就好像在连续的内存地址空间中打了几个标签,这样我们就可以把内存划分为若干逻辑段,可以实现代码和数据的隔离,也有利于实现程序的重定位。
      • 任一个段起始地址加上段内偏移量(有效地址),都可以访问到整个内存空间。因此各个逻辑段之间可以有重叠;甚至可以所有段寄存器都写成一样的值,不进行分段(整个内存为一个段),这样写起程序来更方便
      • 我个人认为,段寄存器的存在就是为了方便程序员写程序,因为其实只要有一个寄存器存段号就可以实现访存,更多的段寄存器只是为了在逻辑上进行一些划分
      • 段寄存这部分涉及到IA-32架构下的寻址的具体物理过程,后面再具体总结
      • 可以参考我以前的两篇文章:
        • IA-32汇编语言笔记(4)—— 段寄存器 & 寻址方式
        • 我理解的物理地址、虚拟地址、逻辑地址
    3. 1个标志寄存器
      • 标志寄存器是IA-32和MIPS的一大区别,上一篇文章已经说明过:计算机组成原理(4.1)—— 指令系统设计
      • 还可参考:IA-32汇编语言笔记(3)—— 简单传送、加减指令 & 标志寄存器

二、操作数类型和表示方式

1. 操作数类型

2. 操作数表示方式

三、指令格式

  1. 指令字长度:变长指令字,长1~15字节
  2. 操作码长度:变长操作码编码,长1~2字节
  3. 一条指令由两部分组成:前缀段+指令段,其中前缀段可以没有

1. 前缀段

  • 前缀段位于指令操作码(指令段)之前,但不是每条指令都有
  • 前缀段格式
  • 四种前缀类型

2. 指令段

  • 指令段:指出操作类型、给出操作数或操作数地址
  • 指令段格式:
  • 各字段说明

四、寻址方式

1. 操作数的来源

2. 指令中必须给出的信息

3. 寻址方式

  • IA-32寻址方式
  • 对比上篇文章 计算机组成原理(4.1)—— 指令系统设计 中给出的一般设计规则,IA-32中除了立即寻址、寄存器寻址等,提供了很丰富的偏移寻址方式
  • 存储单元的有效地址(即段内偏移地址)可以由三部分内容相加构成(可省去任意两部分)
    1. 一个32位基地址寄存器
    2. 一个可乘上比例因子1/2/4/8的32位变址寄存器
    3. 一个8/16/32位位移量

  • 这印证了上篇文章指出的:一般RISC机器不提供自动变址寻址,并将变址和基址寻址统一成一种 “偏移寻址方式”

  • 详见:IA-32汇编语言笔记(4)—— 段寄存器 & 寻址方式

4. 寻址过程

  1. 实方式下的寻址过程
  2. 保护方式寻址过程

5. 示例

  • 现在要存储如下操作数

    int x;
    float a[100];
    short b[4][4];
    char c;
    double d[10];
    
  • 内存中存储情况

  • 各个变量使用的寻址方式

五、MMX指令技术

计算机组成原理(4.2)—— IA-32指令系统(CSIC)相关推荐

  1. 指令系统由计算机组成决定,《计算机组成原理》第5章指令系统.ppt

    文档介绍: 第5章指令系统(时间:3次课,6学时)晕祈竣讫贵啃停贰曝帜孟回蝎川隐员章礁屏丝哦鞠血丙谅卒误惹俘坠韵锤<计算机组成原理>第5章指令系统<计算机组成原理>第5章指令系 ...

  2. 计算机组成原理 第四章【指令系统】课后作业解析【MOOC答案】

    目   录 第1题 第2题 第3题 第4题 第5题 第1题 得分指导: (1)操作码字段可指定64种操作.(3分) (2)双字长二地址指令,用于访问存储器.(4分) (3)RS型指令,一个操作数在通用 ...

  3. 计算机组成原理第二部: 存储系统与指令系统

    主存简单模型和寻址概念 主存储器的基本组成: 存储体, MAR (Memory Address Register), MDR 存储元 --> 存储单元 (内容是存储字) --> 存储体 主 ...

  4. 《计算机组成原理》第五章指令系统 部分课后习题答案 清华大学出版_秦磊华_谭志虎

    5.1 指令:控制计算机执行某种操作(如加.减.传送.转移等操作)的命令. 指令系统:一台计算机中所有指令的集合. 操作码:指令中用于控制指令操作性质的字段. 扩展地址码:将指令的操作码字段向不用的地 ...

  5. 计算机组成原理快速加法器与32位ALU设计实验报告(8位可控加减法电路设计、CLA182四位先行进位电路设计、4位快速加法器设计、16位快速加法器设计、32位快速加法器设计)

    实验二 快速加法器与32位ALU设计实验 本次实验,进行了五个实验,分别是8位可控加减法电路设计.CLA182四位先行进位电路设计.4位快速加法器设计.16位快速加法器设计.32位快速加法器设计.这次 ...

  6. 计算机组成原理指令系统的设计,计算机组成原理课程设计-指令系统及专用寄存器设计...

    东北大学秦皇岛分校东北大学秦皇岛分校 计算机与通信工程学院计算机与通信工程学院 计算机组成原理计算机组成原理课程设计课程设计 指令系统及专用寄存器设计指令系统及专用寄存器设计 专业名称 计 算 机 科 ...

  7. 计算机组成原理基本概念

    计算机组成原理面试基本概念 1.指令系统 指令系统就是一台计算机能直接理解与执行的全部指令的集合称为该计算机的指令系统,也叫机器语言. 2.机器指令 机器指令是CPU能直接识别并执行的指令,它的表现形 ...

  8. 评价微型计算机总线的性能指标,计算机组成原理学习笔记(3):总线

    文章目录 课程笔记导览 附录:英语解释 第三章 总线 3.1 总线的基本概念 使用总线的原因: 总线的定义 总线上信息的传送 总线结构举例 单总线结构 面向CPU的双总线结构 以存储器为中心的双总线结 ...

  9. 计算机系统结构组成原理图,计算机组成原理 与系统结构.ppt

    <计算机组成原理 与系统结构.ppt>由会员分享,可在线阅读,更多相关<计算机组成原理 与系统结构.ppt(32页珍藏版)>请在人人文库网上搜索. 1.主讲:,数字逻辑与计算机 ...

最新文章

  1. PHPExcel读取excel的多个sheet存入数据库
  2. asp mysql 更新数据_Asp更新数据库的几种方法
  3. 操作系统 课堂练习题01【15道 经典题目】
  4. 配置文件*.xml中 classpath: 与 classpath*: 的区别
  5. Flask Web表单
  6. 【hadoop】java.io.IOException: No FileSystem for scheme: hdfs
  7. JavaScript中的输入输出语句
  8. 【工科数学分析】2021-10-01-工科数学分析叒复习(一)
  9. 8年开发,连登陆接口都写这么烂...
  10. 怎么将flac转换成mp3
  11. Data Simulator+DB Fly概述
  12. 刘海屏启动空白页适配全面屏
  13. Springboot 整合Websocket+Stomp协议+RabbitMQ做消息代理 实例教程
  14. oop练习(第11周)
  15. 令我怀念不已,每每想起都热泪盈眶的大学生活
  16. Navicat连接Mysql
  17. 数据处理分析模块 Pandas(3)
  18. 华为p20何时升级成鸿蒙,华为P20用户须知!EMUI 9.1 正式推送更新
  19. 帧计算机术语,请解释一个计算机名词:“帧”,请分别解释“帧”的名称/用途/分类,...
  20. Struts2拦截器入门

热门文章

  1. 【uni-app 仿淘宝做的地区选择器】
  2. EasyRecovery15数据恢复软件相关使用教程
  3. 实验6 熟悉直接操纵页面
  4. KVR16N11S8/4-SP 内存是什么型号
  5. 使用notepad++给每行开头、结尾加内容
  6. 搭建本地Spring Initializr服务(2020/4/17)
  7. 谷歌浏览器 应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具
  8. 电脑开机右下角有小金锁,并且提示一分钟后重启电脑
  9. 明星“真空”出镜上直播,这戏该如何继续演?
  10. Android 双屏异显