计算机组成原理-笔记-第四章

目录

第四章——指令系统

1、指令格式

(1)指令(机器指令-二进制数)

(2)指令分类(按照 地址码的数量 分类)

(3)指令分类(按照长度分类)

(4)指令分类(按照 操作类型)

(5)总结

2、拓展操作码

(1)操作码拓展方法(注意事项)

(2)习题(拓展操作码)

(3)总结

3、指令寻址(顺序、跳跃)

(1)总结

4、数据寻址

(1)直接寻址(和立即寻址不一样——2次)

(2)间接寻址(便于-编制程序-n次)

(3)寄存器寻址(速度快-1次)

(4)寄存器间接寻址(速度快-对间接寻址来说-2次)

(5)隐含寻址

(6)立即寻址

(7)总结

5、数据寻址(偏移寻址)

(1)基址寻址(基地址+偏移量——面向操作系统)

(2)变址寻址(循环结构——面向程序员)

(3)相对寻址(方便jump跳转!)

(4)总结

(5)硬件——比较器

(6)堆栈寻址(软硬件的实现方式都有——pop & push)

6、汇编语言

(1)   指明内存的读写长度

(2)   寄存器

(3)   命令说明

(4) X86汇编指令

(5) AT&T格式 和 Intel格式

(6) 选择语句(用jump)

(7) 循环语句(jump & loop)

(8) CISC & RISC


第四章——指令系统

CPU设计厂商会定义并实现一组机器指令集,供汇编语言使用和调用。

机器指令是计算机硬件直接理解和执行的指令,它们以二进制形式表示,对应着特定的操作和功能。

1、指令格式

 

(1)指令(机器指令-二进制数)

(2)指令分类(按照 地址码的数量 分类)

 

 

(3)指令分类(按照长度分类)

机器字长:CPU一次运算,可以处理的位数!(16、32、64位)x32、x64

因此,当指令是双字长指令时,那么CPU需要分两次读取!

(4)指令分类(按照 操作类型)

(5)总结


2、拓展操作码

(1)操作码拓展方法(注意事项)

 

(2)习题(拓展操作码)

 

(3)总结


 

3、指令寻址(顺序、跳跃)

顺序寻址:

根据【指令长度】和【主存储器如何编址】来进行计数(PC-program count)

即由【指令长度】和【主存储器如何编址】的比值来确定累加的步进

PC的数值——指向下一个要运行的指令!(类似于让你运行对应的代码行数!)

跳跃寻址:

当你按照顺序寻找的时候,遇到函数或者(goto语句时),就会跳转到对应的代码行!

这个也是类似!,当你遇到jump语句时,要跳到指定位置!!!

定长指令

变长指令 

(1)总结


 

4、数据寻址

 

(1)直接寻址(和立即寻址不一样——2次)

直接:直接去主存中找!

立即:地址码=操作数——直接用!

 

(2)间接寻址(便于-编制程序-n次)

 

(3)寄存器寻址(速度快-1次)

 

(4)寄存器间接寻址(速度快-对间接寻址来说-2次)

(5)隐含寻址

(6)立即寻址

(7)总结

5、数据寻址(偏移寻址)

(1)基址寻址(基地址+偏移量——面向操作系统)

记得要用bit位来表明——哪一个寄存器中存放了基地址!!!

优点:存储在内存中,偏移量按照基地址来算(相当于是:相对的),所以当程序并发运行时,指令存储的位置即使有变动,指令也无需修改!

缺点:基址寻址需要一个特定的寄存器来存储基址的值,并且在执行指令时需要进行基址和偏移量的计算。这会引入一定的额外开销。

 

(2)变址寻址(循环结构——面向程序员)

 

(3)相对寻址(方便jump跳转!)

注意:程序段发生改变,那么程序指向的操作数会不会改变呢?

优化方法:将数据段和程序段分开!这样当程序段改变,指向的数据位置就不会改变啦!

(4)总结

(5)硬件——比较器

(6)堆栈寻址(软硬件的实现方式都有——pop & push)

6、汇编语言

(1)   指明内存的读写长度

(2)   寄存器


(3)   命令说明

 

(4) X86汇编指令

(5) AT&T格式 和 Intel格式

 

(6) 选择语句(用jump)

(7) 循环语句(jump & loop)

(8) CISC & RISC

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

.Net C# 免费PDF合成软件

最近用到pdf合成,发现各种软件均收费啊,这个技术非常简单,别人写好的库一大把,这里用到了PDFsharp,项目地址Home of PDFsharp and MigraDoc Foundation 软件下载地址 https://download.csdn.net/download/g313105910…

【Python学习笔记】Matplotlib画图

Matplotlib画图 一、基本函数1. plt.plot2. plt.text3. 设置刻度4. 设置坐标5.设置网格 二、绘制折线图三、绘制散点图四、绘制柱状图五、绘制双坐标图 一、基本函数 1. plt.plot 参数功能选项color改变折线颜色‘r’,‘g’,‘b’,‘black’,‘gray’marker改变数据点的形状‘…

知网期刊《中阿科技论坛》简介及投稿须知

知网期刊《中阿科技论坛》简介及投稿须知 主管单位:宁夏回族自治区科学技术厅 主办单位:宁夏回族自治区对外科技交流中心(中国一阿拉伯国家技术转移中心) 刊  期:月刊 国际刊号:ISSN 2096-7268 国内刊号:CN 64-…

Leetcode-每日一题【剑指 Offer 12. 矩阵中的路径】

题目 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 例如,在下面的 34 的矩阵中包含单词 "ABCCED"(单词中的字母…

java泛型和通配符的使用

泛型机制 本质是参数化类型(与方法的形式参数比较,方法是参数化对象)。 优势:将类型检查由运行期提前到编译期。减少了很多错误。 泛型是jdk5.0的新特性。 集合中使用泛型 总结: ① 集合接口或集合类在jdk5.0时都修改为带泛型的结构② 在实例化集合类时…

【Java并发】synchronized关键字的底层原理

文章目录 1.synchronized作用2.synchronized加锁原理3.monitor锁4.synchronized锁的优化4.1.自适应性自旋锁4.2.偏向锁4.3.轻量级锁4.3.重量级锁 5.总结 1.synchronized作用 synchronized是Java提供一种隐式锁,无需开发者手动加锁释放锁。保证多线程并发情况下数据…

CycleGAN论文解读及代码实现

paper: https://arxiv.org/pdf/1703.10593.pdf github: https://github.com/aitorzip/PyTorch-CycleGAN 1 cycleGAN 小结 网络: 生成器2个:G_A,G_B 判别器两个: D_A,D_B损失函数8个 6个生成器损失函数 2个判别器损失…

Cesium相机理解

关于cesium相机,包括里面内部原理网上有很多人讲的都很清楚了,我感觉这两个人写的都挺好得: 相机 Camera | Cesium 入门教程 (syzdev.cn) Cesium中的相机—setView&lookAtTransform_cesium setview_云上飞47636962的博客-CSDN博客上面这…

记录线上一次mysql只能查询,不能插入或更新的bug

错误复现 突然有一天产品通知xx服务不可用,想着最近也没有服务更新,就先排查一下服务日志 使用postman测试的时候请求明显超时,查看日志显示是一个锁的问题 使用工具连接到mysql,查看information_schema.INNODB_TRX,发现有一个事…

docker删除容器时报错:Error response from daemon: reference does not exist

前言 之前使用的docker版本太低了,升级高版本docker之后的错误。 低版本docker(1.30.1)中的镜像有:golang、mysql,将docker升级为24.0.5并新拉取mysql最新版本之后,执行docker images命令,发现…

构建Docker容器监控系统(2)(Cadvisor +Prometheus+Grafana)

Cadvisor产品简介 Cadvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具。通过在主机上运行Cadvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示。 接着上一篇来继续 部署Cadvisor 被监控主机上部署Cadvisor容器…

比较研发项目管理系统:哪个更适合您的需求?

项目管理系统对于保持项目进度、提高效率和确保质量至关重要。然而,市场上众多的研发项目管理系统让许多团队陷入选择困难。本文将对几个主流的研发项目管理系统进行深入分析,以帮助您找到最适合您团队的解决方案。 “哪个研发项目管理系统好用好&#x…

在时间和频率域中准确地测量太阳黑子活动及使用信号处理工具箱(TM)生成广泛的波形,如正弦波、方波等研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

vue3获得url上的参数值

1、引入 import { useRoute } from vue-router2、获得const route useRoute() console.log(route.query.number)

程序员必备技能-九大分布式ID生成策略

九大分布式ID生成策略 1.UUID UUID (Universally Unique Identifier),通用唯一识别码。UUID是基于当前时间、计数器(counter)和硬件标识(通常为无线网卡的MAC地址)等数据计算生成的。 UUID由以下几部分的组合&#x…

《Python入门到精通》os模块详解,Python os标准库

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 os模块详解 1、文件目录操作os.stat() 获取文件状态os.utime() 修改文件时间os.r…

vuejs 设计与实现 - 简单diff算法

DOM 复用与key的作用: DOM 复用什么时候可复用? key 属性就像虚拟节点的“身份证”号,只要两个虚拟节点的 type属性值和 key 属性值都相同,那么我们就认为它们是相同的,即可以进行 DOM 的复用。即 我们通过【移动】来…

无需公网-用zerotier异地组网

无需公网-用zerotier异地组网 在前面的文章中我们讲到利用frp进行内网穿透,但是他的局限在于你需要一台公网服务器。并且对公网服务器的带宽有一定的要求。因此这里我们推荐一款异地组网工具搭建属于自己的虚拟网络,经过授权连接成功之后彼此都在同一网…

Oracle单实例升级补丁

目录 1.当前DB环境2.下载补丁包和opatch的升级包3.检查OPatch的版本4.检查补丁是否冲突5.关闭数据库实例,关闭监听6.应用patch7.加载变化的SQL到数据库8.ORACLE升级补丁查询 oracle19.3升级补丁到19.18 1.当前DB环境 [oraclelocalhost ~]$ cat /etc/redhat-releas…