计算机组成原理 指令系统(1)

news2024/10/7 13:26:00

本文是HIT计算机组成原理上课笔记,由于唐书有些内容讲的比较抽象,添加了一些王道的图片加以补充。

回忆计算机的工作过程

415c963731034aeba171bb1f9e16f81e.png

 代码被编译器翻译成与之对等的机器指令,除了指令之外还会有一些数据同时被放到主存里

14adb30be67a4862b74c34c8d7d38999.png

机器指令

指令格式

一条指令是机器语言的一条语句,是一组有意义的二进制代码,一条指令通常分为操作码和地址码两部分

96e0c69dc88f42e9869c3511d1635c1b.png

op的位数决定能设计出有多少条指令

  1. 定长指令
  2. 可变长的指令

26db13eb35b04f72b63bd02e2e7b0ca2.png

 比如最后一块决定是定点数还是浮点数乘法。        

扩展地址码技术

指令需要经过译码器翻译成机器语言,如果每个指令的位数相同那么译码器的位数也相同,程序执行时间也相同,但是不同的指令出现的频率也不相同,如果每个指令出现的频率都相同显然对于计算机来说是不划算的,比如加法减法要比乘法除法更常用,类似于哈弗曼树的思想,我们将经常使用的指令设计比较短的格式比较长的指令用于不经常使用的指令。

b9d1aec4b61f4026b7f9631023b00bab.png

 解释如果一个指令是16位,一个地址占4位,那么两个三个四个地址分别占8 12 16个地址,比如三个操作数12位,那么前四位会作为操作码来使用,但是机器不会自动区分地址码和操作码,所以必须保留一个1111作为是几地址的操作指令,所以最多只能表示16-1=15条指令。

地址码

7f764713fbae4c71b4b657029280cdb3.png

  1. 取指令A4 取A1 取A2 存A3  现代计算机如果用PC代替A4那么地址码就会减少一个
  2. 取指令 取A1 取A2 把结果保存在A3
  3. 取指令 取两个操作数 保存结果但是如果操作结果保存在ACC累加寄存器 就可以减少一次访存过程
  4. 取指令 取A1操作数 其他不需要访存 一共访问两次主存

2580b44de3c9495ba8c11bffe58131fb.png

指令字长

  • 定长:一般和存储器的位数相等
  • 变长:一般是字节的整数倍。

小结

当用一些硬件资源代替指令码种地址码的字段之后

  • 可以扩大寻址范围
  • 可以缩短指令的字长 地址码的位数减少直接导致指令字长减少
  • 可以减少访存次数 不用访问存储器了

当指令的地址字段为寄存器时 都设计成寄存器就不用访问存储器了

57f1cbebf0584f9ab848aa7af377b252.png

 AX:计数器

BX:基址寄存器

CX:计数器

DX:数据寄存器

操作数类型和种类

操作数类型和在计算机中的存储方式

a437a48f6d15437597cb7e43e53af22e.png

57be779ff51a4c08a7a311750049dd3e.png

 数据在存取的时候一般按照整数边界的方式来存取,整数边界在存取单字或者双字的时候可以减少访存的次数。

9e120c535ddc4ac1a33171f090589e61.png

 顺带复习一下 指令和数据在计算机中的地位是相等的。

数据传送

回想一下 我们实验三做实验的过程,数据是怎么传送的。

  • MOVE :寄存器 寄存器
  • STORE MOVE PUSH :寄存器 存储器
  • LOAD MOVE POP: 寄存器 寄存器
  • MOVE :存储器 存储器

算数逻辑

c766f362cc624c05877f6738527433ce.png

移位操作 

50fe98467df841ba8cf3a006a434ad44.png

 转移跳转

61bbbd55a7904f86abd567828795bbfd.png

e2a05de5f816481ebc8c7b59ea399200.png

 调用和返回

下图演示的是主程序调用子程序的例子,主程序发出CALL SUB1(形式地址),具体子程序放在哪不是由用户来决定的而是由操作系统来决定的,操作系统把名字转换成地址,也可以通过嵌套形式地址,需要硬件提供断点。

d23792bb02c0480589f64caae0e174ea.png

 陷阱和陷阱指令

fc7c93a8a9644903aedd4d613795d726.png输入输出cd0784caf5ba48c38b20ad25bb202d37.png

 数据可以存放在寄存器中也可以存放在存储器中,如果在寄存器中必须要有寄存器号,如果是存储器要有存储器的地址。

寻址方式

立即寻址

618c7baa3e554a5b857e976797d5d7da.png

  •  指令执行阶段不访存
  • A的位数限制了立即数的范围。
  • MOV AX 3

直接寻址

指令字中的形式地址A就是操作数的真实地址EA

4fad196657bc4d5285197ab787a1c6fa.png

  •  执行阶段只访问一次存储器
  • A的位数限制了指令的范围
  • 操作数的地址不易修改

隐含寻址

操作数的地址隐含在操作码中

f64372d8ade34609a7fa4746d2810aef.png

 比如MUL BX 那么被乘数AX隐含在MUL中

间接寻址

c71d3a1fe5984ef39375c78773e922b0.png

  • 隐含寻址
  • 基址寻址
  • 变址寻址
  • 相对寻址
  • 堆栈寻址

 

 

 

 

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

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

相关文章

第十四章 代理模式

文章目录 前言一、静态代理完整代码接口 ITeacherDao (代理类和被代理类都需要实现这个接口)被代理类 TeacherDao代理类 TeacherDaoProxy测试类 Client 二、JDK动态代理完整代码接口 ITeacher实现类TeacherDao代理工厂 ProxyFacyoryclient 测试 三、Cgli…

Java阶段二Day09

Java阶段二Day09 文章目录 Java阶段二Day09DQLSELECT基础查询全部查询WHERE子句连接多个条件ORDER BY子句分页查询在SELECT子句中使用函数在WHERE中使用表达式别名聚合函数 教师总结DQL语言-数据查询语言语法基础查询语法例 WHERE子句例连接多个条件例AND的优先级高于OR IN(列表…

vue使用原生bootstrap-fileinput无效(未解决)

这篇只记录一下踩到的坑,由于时间关系,此问题未解决 起因:要求替换项目框架,原先jq要替换成vue。之前bootstrap中自带的文件上传插件自带很多功能,上传进度条、上传内容预览等非常方便(如图)&a…

Netty核心源码分析(四)心跳检测源码分析

文章目录 系列文章目录一、心跳检测案例二、源码分析1、Netty心跳的三个Handler2、IdleStateHandler源码(1)四个关键属性(2)handlerAdded方法(3)四个内部类 3、读事件的run方法——ReaderIdleTimeoutTask4、…

easyrecovery16最新数据恢复软件密钥使用方法教程

easyrecovery是一款专业的数据恢复软件,其最新版本为easyrecovery2023将于2022年底发布。总之,easyrecovery是一款功能齐全、性能稳定的专业数据恢复软件,无论删除文件、格式化分区或磁盘故障,它都可以提供最高的恢复成功率。值得个人用户选用。此版本在功能和性能上有较大提升…

支持中英双语和多种插件的开源对话语言模型,160亿参数

一、开源项目简介 MOSS是一个支持中英双语和多种插件的开源对话语言模型,moss-moon系列模型具有160亿参数,在FP16精度下可在单张A100/A800或两张3090显卡运行,在INT4/8精度下可在单张3090显卡运行。MOSS基座语言模型在约七千亿中英文以及代码…

HTB靶机-Lame-WP

Lame 简介: Lame is a beginner level machine, requiring only one exploit to obtain root access. It was the first machine published on Hack The Box and was often the first machine for new users prior to its retirement Tags: Injection, C…

Midjourney 注册 12 步流程教学

原文: https://bysocket.com/midjourney-register/ 先推荐一个 PromptHero 中文官网 https://promptheroes.cn/ :Prompt Heroes 官网是提供 AI 绘画相关提示词中文网站,包括 Midjourney(MJ)、 Stable Diffusion、DALL…

printf,echo,cat指令与输出重定向>,输入重定向<与追加重定向>>等

printf指令的功能(输出/追加重定向) 语法:printf “格式化数据” (>/>>重定向)功能:格式化输出(默认往显示器文件且不带换行符) 实例演示 echo指令的功能(输出/追加重定向) 语法&am…

使用chatgpt分析 too many open files 问题-未验证

java.io.IOException: Too many open files 怎么能定位到时哪行代码出的问题 ? 2023/4/25 19:46:33 当出现类似 "java.io.IOException: Too many open files" 的错误时,通常是因为程序打开了过多的文件句柄(File Handles&#xff…

【操作系统】第四章 文件管理

文章目录 知识体系4.1 文件系统基础4.1.1 文件的基本概念4.1.2 文件控制块和索引节点4.1.3 文件的操作4.1.4 文件保护4.1.5 文件的逻辑结构4.1.6 文件的物理结构 4.2 目录4.2.1 目录的基本概念4.2.2 目录结构4.2.3 目录的操作*4.2.4 目录实现4.2.5 文件共享 4.3 文件系统4.3.1 …

快速部署和测试API:使用APIfox的实战经验分享

最近发现一款接口测试工具--apifox,我我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的公式,更能说明apifox可以做什么。 20分钟学ApiFox接口测试工具,结合30个项目实战讲解!_哔哩哔哩_bilibili20分…

十、v-model的基本使用

一、v-model的基本使用 表单提交是开发中非常常见的功能,也是和用户交互的重要手段: 比如用户在登录、注册时需要提交账号密码;比如用户在检索、创建、更新信息时,需要提交一些数据; 这些都要求我们可以在代码逻辑中…

LVS+KeepAlived高可用负载均衡集群

1. 高可用群集的相关知识 1. 1 高可用(HA)群集与普通群集的比较 普通群集 普通的群集的部署是通过一台度器控制调配多台节点服务器进行业务请求的处理,但是仅仅是一台调度器,就会存在极大的单点故障风险,当该调度器…

【MCS-51】51单片机结构原理

至今为止,MCS-51系列单片机有许多种型号的产品:其中又分为普通型51(8031、8051、89S51)和增强型52(8032、8052、89S52等)。它们最大的区别在于存储器配置各有差异。下面我举例子的都是8051这一系列的单片机…

如何用ChatGPT协助做内容分发?(文本变成直播/音频/视频脚本)

该场景对应的关键词库(14个): 直播博主、直播达人、音频主持人、产品特点、品牌故事、品牌活动、品牌logo、视频主角、画外音解说员、编剧身份、品牌内容分发方向、时长、脚本类型、产品 提问模板: 1、你是一名优秀的美妆达人&am…

零拷贝技术详解

文章目录 零拷贝技术前世数据的四次拷贝与四次上下文切换4 次 copy4 次上下文切换弊端 零拷贝诞生准备--DMA技术DMA 参与下的数据四次拷贝 零拷贝诞生零拷贝技术什么是零拷贝技术?零拷贝的实现方式技术总结1、DMA 技术2、使用 page cache 的 zero copy:3…

Redis命令及不同类型数据的应用场景

文章目录 本章要点基本命令心跳命令ping读写键值命令DB切换select查看key数量 dbsize删除当前库数据flushdb删除所有库数据flushall退出客户端命令 Key操作命令String型Value操作命令典型应用场景 Hash型Value操作命令应用场景 List型Value操作命令应用场景 Set型Value操作命令…

麻了,部门新来的00后给我卷崩溃了...

今天上班开早会就是新人见面仪式,听说来了个很厉害的大佬,年纪还不大,是上家公司离职过来的,薪资已经达到中高等水平,很多人都好奇不已,能拿到这个薪资应该人不简单,果然,自我介绍的…

前端工程化知识总结

1.webpack 和 gulp 区别 gulp(流)主要指前端开发的工作流程,通过配置一系列的task,定义task处理的事务(例如文件压缩合并、雪碧图、启动server、版本控制等),再定义执行顺序,让gulp执行 task,从…