100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 深入浅出计算机组成原理 指令跳转(自我提升第十八天)

深入浅出计算机组成原理 指令跳转(自我提升第十八天)

时间:2019-07-29 22:02:47

相关推荐

深入浅出计算机组成原理 指令跳转(自我提升第十八天)

上节学这个徐文浩的深入浅出计算机组成原理,就吃了大亏,渐渐的就发现了,其实他讲的并不单纯是计算机组成原理,而是讲的汇编语言和单片机,(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,不然有两个课程完全无法更新,让读者无法一起学习!!!(ง •_•)ง加油

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。