深入浅出计算机组成原理 指令跳转(自我提升第十八天)
上节学这个徐文浩的深入浅出计算机组成原理,就吃了大亏,渐渐的就发现了,其实他讲的并不单纯是计算机组成原理,而是讲的汇编语言和单片机,(lll¬ω¬)汗!
菜鸟倒是还好,因为学过单片机的,汇编语言多少了解一点,可各位读者就不一样了,所以我尽力最简化,不涉及这些单片机的知识,实在不行,菜鸟会放弃更新这个内容,毕竟,这不是我要的计算机组成原理(> 口 <)!!!
文章目录
- CPU 是如何执行指令的
- 三种寄存器:
- 执行过程
- 读者动手环节
CPU 是如何执行指令的
拿我们用的 Intel CPU 来说,里面差不多有几百亿个晶体管。实际上,一条条计算机指令执行起来非常复杂。
我们先不管几百亿的晶体管的背后是怎么通过电路运转起来的。逻辑上,我们可以认为,CPU 其实就是由一堆寄存器组成的。而寄存器就是 CPU 内部,由多个触发器(Flip-Flop)或者锁存器(Latches)组成的简单电路。
(这里触发器和锁存器,各位感兴趣的读者可以自己去百度,极客时间里面没讲,不过学过数字逻辑的应该知道,菜鸟学过了,不过现在忘了,只能说是自己学得不牢靠)
N 个触发器或者锁存器,就可以组成一个 N 位(Bit)的寄存器,能够保存 N 位的数据。
三种寄存器:
- PC 寄存器(Program Counter Register),我们也叫指令地址寄存器(Instruction Address Register)。顾名思义,它就是用来存放下一条需要执行的计算机指令的内存地址。
- 指令寄存器(Instruction Register),用来存放当前正在执行的指令。
- 条件码寄存器(Status Register),用里面的一个一个标记位(Flag),存放CPU 进行算术或者逻辑计算的结果。(零标志条件码(对应的条件码是ZF,Zero Flag)。除了零标志之外,Intel 的 CPU 下还有进位标志(CF,Carry Flag)、符号标志(SF,Sign Flag)以及溢出标志(OF,Overflow Flag),用在不同的判断条件下。)
一个 CPU 里面会有很多种不同功能的寄存器。上面三种只是比较特别而且重要的,其实就是执行代码时必须使用到的寄存器。除了这些特殊的寄存器,CPU 里面还有更多用来存储数据和内存地址的寄存器,这样的寄存器通常一类里面不止一个。我们通常根据存放的数据内容来给它们取名字,比如整数寄存器、浮点数寄存器、向量寄存器和地址寄存器等等。有些寄存器既可以存放数据,又能存放地址,我们就叫它通用寄存器。
执行过程
实际上,一个程序执行的时候,CPU 会根据 PC 寄存器里的地址,从内存里面把需要执行的指令读取到指令寄存器里面执行,然后根据指令长度自增,开始顺序读取下一条指令。当遇到比较特别的代码,eg:if、for、while,首先会将判断结果放入条件码寄存器,PC 寄存器会自动自增,根据结果去执行跳转指令(对应上一节中的J指令,读者只要知道是跳转指令就好),PC寄存器就不再是顺序读取下一条指令,而是直接设置为该指令地址,然后把其中的指令加载到指令寄存器,按照上面的过程继续执行。
读者动手环节
突然感觉自己总结,比极客简单多了,其实极客时间就是通过对照c语言代码和汇编代码,然后跟你解释汇编代码的字母代表什么( 这就是单片机老师做的事,不接受反驳 ),这里如果各位读者意犹未尽,其实可以自己敲循环、判断代码,然后自己比较,这里留下对照方法(其实上一节里有,菜鸟水字数(¬v¬) )
$ gcc -g -c test.c
$ objdump -d -M intel -S test.o
菜鸟得赶紧去复习java、c语言、JS,不然有两个课程完全无法更新,让读者无法一起学习!!!(ง •_•)ง加油
深入浅出计算机组成原理 指令跳转(自我提升第十八天)相关推荐
- 极客时间 自我提升第二天 数据结构与算法之美 应该掌握 / 趣谈网络原理 / 深入浅出计算机组成原理 思维导图
菜鸟今天又来完成所说的诺言,也希望大家督促,在今天的学习中,菜鸟有了新的认知,我会将上一篇中理解不完善的一些地方进行补充,学习本就是不断打破自己的认知,如果思考都不做,何来的知识的积累 文章目录 数据 ...
- 深入浅出计算机组成原理 通过CPU主频看性能(自我提升第8天)
希望大家关注菜鸟,不然后期的文章,各位可能无法及时看到 文章目录 深入浅出计算机组成原理 1.计算机性能的两个指标 2.计算机的计时单位: CPU时钟 大家了解了上面的知识点,那接下来就是两者结合的高 ...
- 【练拳不练功,到老一场空】深入浅出计算机组成原理
深入浅出计算机组成原理 文章目录 深入浅出计算机组成原理 计算机的基本组成 硬件设备组成 CPU 内存 主板 I/O 设备 硬盘 显卡 冯.诺依曼体系结构 运算器/处理器单元 控制器 存储器 输入设备 ...
- 【计组】入门篇 --《深入浅出计算机组成原理》(一)
课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 目录 一.为什么需要学习计算机组成原理 二.冯·诺依曼体系结构:计算机组成的金字塔 1.计算机的基本硬件组成 2.冯·诺依曼体系结构 ...
- 【计组】设计大型DMP系统--《深入浅出计算机组成原理》(十四)
目录 一.DMP:数据管理平台 二.MongoDB 真的万能吗 三.关系型数据库:不得不做的随机读写 (一)Cassandra:顺序写和随机读 1.Cassandra 的数据模型 2.Cassandr ...
- 深入浅出计算机组成原理(四)——穿越功耗墙,我们该从哪些方面提升“性能”?
文章目录 功耗:CPU 的"人体极限" 并行优化,理解阿姆达尔定律 总结延伸 补充阅读 课后思考 上一讲,在讲 CPU 的性能时,我们提到了这样一个公式: 程序的 CPU 执行时间 ...
- 深入浅出计算机组成原理01:计算机概要与技术
目录 1. 计算机系统结构中的8个伟大思想 1.1 面向摩尔定律设计 1.2 使用抽象简化设计 1.3 加速大概率时间 1.4 通过并行提高性能 1.5 通过流水线提高性能 1.6 通过预测提高性能 ...
- 深入浅出计算机组成原理03:处理器
目录 1. 建立数据通路 1.1 指令周期(Instruction Cycle) 1.1.1 指令执行步骤 1.1.2 指令周期 1.2 建立数据通路 1.2.1 数据通路的组成 1.2.2 控制器 ...
- 计算机组成原理指令译码,计算机组成原理实验报告指令译码器.docx
河北大学计算机组成原理实验报告 实验项目指令译码器成绩 -X实验目的: 理解指令译码器的作用和重要性. 学习设计指令译码器. 实验原理: 指令译码器是计算机控制器屮最重要的部分.所谓组合逻辑控制器就是 ...
最新文章
- python 把2个列表或者2个元组转成字典
- 洛谷P4053 [JSOI2007]建筑抢修
- 夏令营讲课内容整理 Day 5.
- Shell脚本中command not found报错处理
- java模拟退火程序
- Docker部署SDN环境
- Pixhawk之姿态解算篇(5)_ECF/EKF/GD介绍
- React后台管理系统-file-uploader组件
- 飞机大战小游戏1.0版本
- 剑指offer面试题36. 二叉搜索树与双向链表(中序遍历)(递归)
- 算法分析c语言版+视频教程,数据结构c语言版
- Android一键清空内存,教你一键深度清理手机垃圾,瞬间释放几个G,再也不怕内存不够了...
- 金融计量学第一次实验:eviews做多元线性回归分析
- mybatipse 下载_哇塞!可以免费下载某度文档的doc格式啦
- 移动无线网络参数及速率
- python3实现二叉树的简单遍历(DLR 、LDR、LRD)
- 计算机课平时成绩重要吗,离散数学课程平时成绩评定方法的探索与研究
- [android] 手机卫士黑名单功能(ListView结合SQLite增删改)
- 去哪儿网首页分析 Home.vue
- 快速生成 HTML 表格代码