CPU是如何识别代码的他的工作原理是怎样的(汇编语言使用了助记符代替机器指令的操作码用地址符号或标号代替指令或操作数的地址)
https://m.toutiao.com/is/dFLjRAQ/
(汇编语言使用了助记符代替机器指令的操作码用地址符号或标号代替指令或操作数的地址)
https://m.toutiao.com/is/dFLr4PH/
从本质上来说,CPU根本不认识代码!它的工作是机械化执行这些人类给出的指令,然后完成指令动作。
大家好!我是叮当大数据,很高兴回答您的这个问题,今天抛砖引玉,和您探讨这个问题。
一、CPU的组成:
每片CPU中都会有最基础的两个部分,控制单元 CU和算术和逻辑单元 ALU。
1、控制单元 CU
CU指控制单元(Control Unit),控制单元是CPU第一个必备的组件,因为它是整个CPU的指挥控制中心。
它根据我们预先编好的机器语言,按照顺序从存储器中取出各条指令,放在指令寄存器IR中,再通过指令译码确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出控制信号。
它分为硬连线控制单元和微型可编程控制单元两种类型。区别是,硬连线控制单元速度更快,而微型可编程控制单元则是可以自己调节。
2、算术和逻辑单元 ALU
ALU非常容易理解,算术逻辑单元(arithmetic and logic unit) ,简称ALU.
它的任务是完成所有算术和逻辑计算。它是由执行逻辑电路或逻辑门组成。
3、寄存器和内存
大家知道,CPU的工作就是执行提供的指令,而处理这些指令时需要大量的数据。
这些数据包括了中间数据,或是输入数据,或是输出数据。
那么这些数据放在哪里了?
于是有了寄存器。你理解成CPU内小容量的存储数据的地方就可以了,寄存器可以存储指令,输出数据,存储地址或任何类型的数据。
而寄存器的基础就是触发器(锁存器),它是由电路构成的逻辑门的组合 。
一个基础锁存器有一个逻辑门单元和3根线构成,我们可以启通过写入线来更改存储的数据。而禁用写入线时,输出始终保持不变。
当然,集成在CPU内的寄存器的速度很快,但很昂贵。
所以,人们想出了一个好办法,于是速度很慢的RAM出现了,人们叫它随机存取存储器,通俗叫法内存。没错就是你电脑插的内存条。
其实RAM就是一片集成了大量寄存器的集合,它可以存储更多数据。而当RAM没有电源供给时,数据会丢失。
4、高速公路是总线
以上的CPU,寄存器,存储器和输入输出设备中,所有数据都必须通过总线进行传输。下图很容易看到电脑的三种总线的对应关系,篇幅原因,不多说,理解就行了。
二、CPU机器语言:
CPU执行的我们叫它机器语言程序,就是用硬件实现的机器指令。
它是由一条一条指令组成的。机器语言使用绝对地址和绝对操作码,每一条指令都对应一个CPU的一个基本操作,而这些操作看透了实际上非常简单。
一条机器指令绝对操作码必须包括操作码和地址码。
操作码就是该指令所要完成的操作(加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。
而地址码用来指上面加、减、乘、除的操作对象是谁?或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址,它是确定的一个地址,所以叫绝对地址。
简单理解一条机器语言指令,请CPU同学将寄存器中第三排第二行数据加上第三排第三行数据相加,结果输出告诉我答案后,你就可以休息了。
基本内容:
算术,例如 加法、减法
逻辑指令,例如 和, 或,而 不是
数据指令,例如 移动、输入、输出、 加载、存储
控制流指令,例如 goto, 如果... goto,则 调用并 返回
通知程序已经结束,CPU 暂停。
三、汇编语言
看上去简单,但要实现用机器语言编写的程序的兼容,对计算机体系结构有非常苛刻的要求,且不说每家计算机其指令的数量与功能、指令格式、寻址方式、数据格式是差别的。
光是开发者的计算机的体系结构和普通用户程序接口必须完全相同,就很难达成。
并且机器语言灵活性较差,可阅读性也很差,编写程序员要求太高了,于是直接拿机器语言来编写成为不可能完成的任务。
怎么办?
于是汇编语言出现了,而与机器语言对应的语言我们叫统称汇编语言,它可以完美的改写成机器语言,这样就达到直接指挥CPU工作。
汇编语言使用了助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。
由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存。
因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应用。
以上从CPU的组成、工作流程、机器语言、汇编语言简单阐述了CPU为什么能够执行指令。
希望对您有所启发!
https://m.toutiao.com/is/dFLjRAQ/