计算机组成原理的学习笔记(8)-- 指令系统·其一 指令的组成以及数据寻址方式

news/2024/12/29 5:02:58/

学习笔记

前言


本文主要是对于b站尚硅谷的计算机组成原理的学习笔记,仅用于学习交流。

1. 指令

1.1 组成
  • 操作码(Opcode):指指令中执行特定操作的部分。
  • 地址码:指令中用于指定操作数位置的部分。
1.2 扩展操作码
  • 变化长度操作码:采用哈夫曼编码等技术确保操作码不重复。
  • 实现步骤:需求分析、设计、硬件实现、软件支持、验证测试和文档发布。

2. 常见的数据寻址方式

2.1 立即寻址
  • 定义:操作数直接写在指令中,不需要访问内存。
  • 实现:指令的操作数就是数据。
  • 应用场景:常用于赋值操作,例如 MOV AX, 5,将数值 5 加载到寄存器 AX
  • 优点:简单,速度最快。
  • 缺点:数据范围小。

2.2 直接寻址
  • 定义:指令中给出的是一个内存地址,CPU 直接访问该地址的内容。
  • 实现:从内存中直接读取数据。
  • 应用场景:简单的内存访问。
  • 优点:简洁
  • 缺点:不灵活,无法动态计算地址。

2.3 间接寻址
  • 定义:指令中给出的地址是一个指针,指向另一个内存地址,CPU 需要先从该指针中获取目标地址,再访问数据。
  • 实现:首先从给定的地址获取一个指向数据的地址,然后再访问数据。
  • 应用场景:动态数据访问,指针操作等。
  • 优点:灵活,可以访问不同的内存位置,尤其适用于复杂数据结构。
  • 缺点:需要两次内存访问,速度较慢。

2.4 隐含寻址
  • 定义:指令的操作数由指令本身隐含或自动确定,操作数的位置不需要显式提供。CPU 在执行指令时自动操作特定的寄存器或内存位置。

    实现:操作码本身决定了操作数的位置,通常固定与某些寄存器或硬件资源关联。

    应用场景:适用于寄存器操作、堆栈操作、状态寄存器操作等简单且快速的操作。

    优点

    • 无需显式地址,指令格式简洁。
    • 操作快速,无需地址计算或内存访问。

    缺点

    • 灵活性较差,操作数位置固定,无法动态指定或变更。

2.5 寄存器寻址
  • 定义:操作数直接存储在寄存器中,指令通过指定寄存器来访问数据。
  • 实现:指令操作数本身是寄存器的值,无需访问内存。
  • 应用场景:寄存器之间的操作,如 MOV AX, BX,将寄存器 BX 的值复制到 AX
  • 优点:访问速度非常快,因为寄存器访问是最快的。
  • 缺点:数量有限,无法存储大量数据。

2.6 寄存器间接寻址
  • 定义:使用寄存器存储数据的地址,寄存器中存储的是指向数据的内存地址,CPU 通过寄存器访问内存。
  • 实现:寄存器中的值指向目标数据的内存地址,CPU 通过该寄存器来间接访问数据。
  • 应用场景:通过寄存器指向内存地址的操作,如 MOV AX, [BX],将 BX 指向的内存地址中的值加载到 AX 寄存器中。
  • 优点:灵活,寄存器间接寻址支持动态访问内存。
  • 缺点:需要管理寄存器中的地址,速度较直接寻址慢。

2.7 基址寻址
  • 定义:通过基地址寄存器和偏移量计算最终地址。
  • 实现:将基址寄存器和偏移量相加,得到内存地址。
  • 应用场景:数组或结构体的访问。
  • 优点:适合访问连续的数据块,灵活,常用于数组和结构体。
  • 缺点:需要管理基址寄存器和偏移量。

2.8 变址寻址
  • 定义:基址寻址的一种扩展,使用基址寄存器和索引寄存器的组合来计算地址。
  • 实现:基址寄存器 + (索引寄存器 × 步长) + 偏移量。
  • 应用场景:访问数组元素。
  • 优点:支持灵活的内存访问,尤其适用于数组访问。
  • 缺点:需要使用多个寄存器,增加了计算复杂度。

2.9 相对寻址
  • 定义:相对地址是指相对于当前指令的地址(或程序计数器 PC)的偏移量。
  • 实现:通过当前地址(PC)加上偏移量计算最终地址,常用于跳转或分支指令。
  • 应用场景:程序跳转、分支语句、函数调用等。
  • 优点:常用于控制流操作,支持代码独立性和程序重定位。
  • 缺点:只能用于跳转和分支指令,通常不适用于数据访问。

2.10 堆栈寻址
  • 定义:通过栈顶指针(SP)来访问数据。
  • 实现:栈顶元素的地址由栈指针寄存器(SP)决定。
  • 应用场景:函数调用、局部变量管理、返回地址管理等。
  • 优点:支持动态的函数调用和局部数据存取,常用于递归和函数栈。
  • 缺点:操作栈需要使用专门的寄存器和管理机制。

结语

好累,好多没看懂的都得问问AI,寻址什么的…好麻烦。请添加图片描述


http://www.ppmy.cn/news/1558980.html

相关文章

单片机实物成品-006 汽车尾气监测系统(代码+硬件+论文)

汽车尾气监测系统(MQ135(空气质量) MQ7(一氧化碳)温度排风蜂鸣器灯光自动模式手动模式蓝牙传输控制送APP源码) 本项目以软硬件结合的方式,选择C语言作为程序硬件编码语言,以STM32单片机作为核心控制板,在数据传输节点…

互联网十万个为什么之什么是微服务

微服务(Microservices)是一种软件架构设计模式,它将应用程序分解为小型、自治的服务单元,这些服务单元可以独立部署、扩展和维护,其中每一个服务单元也都是一个微服务。 基于微服务形成的软件架构风格称为微服务架构&…

浅谈下Spring MVC的执行流程

什么是Spring MVC Spring MVC是一个基于Java的Web框架,用于构建Web应用程序。 它是Spring Framework的一部分,它提供了模型-视图-控制器(MVC)架构。 支持RESTful风格的URL请求,易于与其他视图技术集成,如…

24/12/24 力扣每日一题 # 题目解析:1705. 吃苹果的最大数目 全网最详细解释

题目解析:1705. 吃苹果的最大数目 问题描述 你有一棵特殊的苹果树,连续 n 天,每天树上可能会长出若干个苹果。对于第 i 天: apples[i] 表示当天长出的苹果数量。这些苹果将在 days[i] 天后腐烂,也就是说&#xff0c…

MacOS M3源代码编译Qt6.8.1

编译时间过长,如果不想自己编译,可以通过如果网盘进行下载: 链接: https://pan.baidu.com/s/17lvF5jQ-vR6vE-KEchzrVA?pwdts26 提取码: ts26 在macOS上编译Qt 6需要一些前置步骤和工具。以下是编译Qt 6的基本步骤: 安装Xcode和…

LLaMA-Factory GLM4-9B-CHAT LoRA 指令微调实战

🤩LLaMA-Factory GLM LoRA 微调 安装llama-factory包 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git进入下载好的llama-factory,安装依赖包 cd LLaMA-Factory pip install -e ".[torch,metrics]" #上面这步操作会完成…

【YOLOv3】源码(train.py)

概述 主要模块分析 参数解析与初始化 功能:解析命令行参数,设置训练配置项目经理制定详细的施工计划和资源分配日志记录与监控 功能:初始化日志记录器,配置监控系统项目经理使用监控和记录工具,实时跟踪施工进度和质量…

HarmonyOS NEXT 实战之元服务:静态案例效果--- 日出日落

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: import { authentication } …