程序执⾏的过程-⼀⽂看懂计算机执⾏程序的过程
程序就是指令的集合,为使计算机按预定要求⼯作,⾸先要编制程序。程序是⼀个特定的指令序列,它告诉计算机要做哪些事,按什么步骤去做。指令是⼀组⼆进制信息的代码,⽤来表⽰计算机所能完成的基本操作。
  1、程序
  程序是为求解某个特定问题⽽设计的指令序列。程序中的每条指令规定机器完成⼀组基本操作。如果把计算机完成⼀次任务的过程⽐作乐队的⼀次演奏,那么控制器就好⽐是⼀位指挥,计算机的其它功能部件就好⽐是各种乐器与演员,⽽程序就好像是乐谱。计算机的⼯作过程就是执⾏程序的过程,或者说,控制器是根据程序的规定对计算机实施控制的。例如,对于算式
  计算机的解题步骤可作如下安排:
  步骤1:取a ;
  步骤2:取b ;
  步骤3:判断;
汇编语言结束指令
  若 b≥0,执⾏步骤4
  若b<0,执⾏步骤6
  步骤4:执⾏a+b;
  步骤5:转步骤7;
  步骤6:执⾏a-b;
  步骤7:结束。
  计算机的⼯作过程可归结为:取指令→分析指令→执⾏指令→再取下⼀条指令,直到程序结束的反复循环过程。通常把其中的⼀次循环称为计算机的⼀个指令周期。总之,我们可把程序对计算机的控制归结为每个指令周期中指令对计算机的控制。
  2、指令
  程序是由指令组成的。指令是机器所能识别的⼀组编制成特定格式的代码串,它要求机器在⼀个规定的时间段(指令周期)内,完成⼀组特定的操作。指令的基本格式可归结为操作码OP和操作数地址AD两部分,具体内容是:
  ⑴指出计算机应完成的⼀组操作内容,如传送(MOV)、加法(ADD)、减法(SUB)、输出、停机(HLT)、条件转移(JZ)等。这部分称为指令的操作码部分。
  ⑵两个操作数的地址和存放结果的地址及寻址⽅式。
  ⑶为保证程序执⾏的连续性,在执⾏当前指令时,还需指出下⼀条指令的地址。由于指令在存储器中⼀般是顺序存放的,所以只要设置⼀个指令指针(IP),每执⾏⼀条指令,IP⾃动加1,便⾃动指出下⼀条指令的地址,⽽不必在指令中专门指出下⼀条指令的地址。只有在转移指令中才指出下⼀条指令的地址。此时,IP的内容将随转移指令所指⽰的内容改变。
  3、指令的执⾏
  指令规定的内容是通过控制器执⾏的,或者说控制器是按照⼀条指令的内容指挥操作的。
  ⑴控制器的功能
  ①定序功能——保证按程序规定的顺序执⾏指令。
  ②定时功能——计算机处理信息是通过信息在计算机的逻辑电路中的流通完成的。为保证计算机⼯作的准确性,控制器要为计算机中的各部件提供统⼀节拍,使各条指令及组成每条指令的各基本操作(通常称为微操作)都严格地按规定的时间有条不紊地⾃动执⾏。
  ③操作控制功能——控制器应能按照指令规定的内容,在相应的节拍向有关部件发出操作控制信号。
  ⑵控制器的组成
  在控制器中,上述功能分别由指令部件、时序部件和操作控制部件来完成。它们的组成如图1-8所⽰。
  ①指令部件:指令部件的主要功能是取指令和分析指令。它由指令指针IP(也叫指令计数器IC或程序计数器PC)、指令寄存器IR、指令译码器、地址计算部件组成。其中:
  ●指令指针IP的功能是指出当前指令的地址。它有加1功能,通常每取⼀条指令后⾃动加1,以指出下条指令的地址。遇到特殊情况(如转移)可通过地址计算部件形成下⼀条指令的地址。
  ●指令寄存器IR保存由存储器取来的指令,并分别把操作码OP和操作数地址AD送指令译码和地址计算部件。
  ●指令译码器也称操作码译码器。它按操作码的内容向操作控制部件提供相应的操作电信号。
  ●地址计算部件的作⽤是对指令中地址码进⾏(变址、间址等)运算,求出的操作数地址送存储器以取出数据;或者把转移指令中指出的下⼀条指令地址送IP。
  ②时序部件:时序部件也叫节拍发⽣器,它能为各部件提供⼀个时间基准。时钟频率(如800MHz,1GHz,2 GHz,2.4 GHz,3 GHz…)越⾼,计算机的⼯作速度就越快。
  ③操作控制部件:该部件的功能是根据指令译码器的规定内容,在规定的节拍内向有关部件发出操作控制信号。
  ⑶指令的执⾏过程
  通常,计算机执⾏⼀条指令的步骤如下:
  ①把指令指针IP中的指令地址送存储器,从该地址取出指令送指令寄存器IR;
  ②地址计算部件,根据IR中的地址码形成操作数地址送存储器,从该地址取出数据,送到运算器中的寄存器(或寄存器组);
  ③将IR中的操作码OP送指令译码器进⾏译码;
  ④在控制器发出的操作信号的控制下,计算机各有关部件执⾏操作码OP规定的操作;
  ⑤指令指针IP加1,形成下⼀条指令地址。如遇到转移指令,则按转移指令对状态标志寄存器测试的结果,决定是否将转移指令中指出的指令地址送指令指针IP。
程序的执⾏过程
  当我们输⼊以下程序,编译运⾏,计算机从屏幕输出hello, world!。整个过程计算机都怎么运作的呢?
  计算机内部存储的是0和1,计算机通过位信息以及上下⽂来解读这些0、1信息的。
  hellow,world是由0和1组成的序列,将这些程序代码转换成相应的⽂本字符,每8位表⽰⼀个字节,⽤来存储⼀个字符。
  hellow,world的ASCII码表⽰
  因为我们输⼊的hellow,world是⼈可以阅读和编写的,但是机器并不能直接识别他们,我们需要把这些⽂字翻译成机器可执⾏的⼆进制⽂件,这⼀部分的⼯作是由编译系统完成的。编译系统由预处理器、编译器、汇编器、连接器四部分组成。以hello, world程序为例,各部分共同完成将源⽂件编译成⼆进制可执⾏⽂件。各个部分完成的具体⼯作如下:
  预处理器:根据以#开头的命令,将包含的头⽂件加载进⼊源程序源程序。预处理器读取系统头⽂件stdio.h中的内容,代替此⾏内容。源程序经过预处理后,得到另⼀个c程序,此程序通常以.i为后缀保存。
  编译器:将预处理后的.i⽂件转换成汇编程序。编译器将不同的⾼级语⾔(如c语⾔,C++语⾔)转换成严格⼀致的汇编语⾔格式进⾏输出。汇编语⾔以标准的⽂本格式确切的描述每机器语⾔指令。编译器得到的⽂件通常以.s为后缀保存。
  汇编器:将汇编语⾔(.s⽂件)翻译成机器语⾔指令,并将这些指令打包成⼀种可定位⽬标程序格式。汇编后得到的⽂件即为⼆进制⽂件,通常以.o为后缀。
  链接器:hello, world程序中调⽤过printf函数,它是⼀个c标准库⾥的函数。Printf函数存放在⼀个名为printf.o的单独预编译的⽂件中。⽽这个⽂件必须以适当的⽅式并⼊到我们的程序中,这个⼯作由链接器完成。将外部的.o⽂件并⼊后,得到⼀个完整的hello, world可执⾏⽂件。可执⾏⽂件加载到存储器后,由系统复制执⾏。
  程序加载进⼊CPU的过程
  Shell:命令⾏解释器,当⽤户输⼊⼀⾏命令后,shell先判断它是不是⼀个shell内置命令,如果不是,shell会假定⽤户输⼊为⼀个可执⾏⽂件的名字,从⽽去加载并执⾏该⽂件。因此,当我们通过编译系统将源⽂件编译成可执⾏⼆进制⽂件后,在shell中输⼊我们得到的可执⾏⼆进制⽂件名,shell将其从磁盘中加载到主存当中,通过CPU进⾏解释运⾏,最终通过终端设备(屏幕)将他显⽰出来,程序运⾏结束。
  主存储器:简称主存,是处理器执⾏程序时⽤于临时存放程序及其数据。主存由⼀组动态随机存储器芯⽚组成。
  运算器:计算机中执⾏各种算术和逻辑运算操作的部件。
  控制器:计算机中执⾏各种算术和逻辑运算操作的部件。
  三、CPU的组成
  CPU是由四⼤部分所构成的:寄存器、控制器、运算器、时钟。
  寄存器
  CPU内部的内存,程序加载进CPU内部的寄存器中从⽽被⽤来解释和运⾏。
  控制器
  计算机的指挥中⼼,负责决定执⾏程序的顺序,给出执⾏指令时机器各部件需要的操作控制命令。
  运算器
  计算机中执⾏各种算术和逻辑运算操作的部件。
  时钟
  它是处理操作的最基本的单位,影响着指令的取出和执⾏时间。
  CPU中的主要寄存器
  累加寄存器(AC):主要进⾏加法运算。
  标志寄存器(PSW):记录状态,做逻辑运算。
  程序计数器(PC):是⽤于存放下⼀条指令所在单元的地址的地⽅。
  基质寄存器(BX):储存当前数据内存开始的位置。
  变址寄存器:储存基质寄存器的相对位置。
  通⽤寄存器(GPRs):⽀持有所的⽤法。
  指令寄存器(IR):CPU专⽤,储存指令。
  堆栈寄存器(SP):记录堆栈的起始位置。
  寄存器寄存器是中央处理器内主要组成结构成分,它是CPU当中有限存贮容量的⾼速存贮部件,它在⼯作时能将计算机指令数据进⾏暂时的存储。
  内存地址=基质+变址
  处理器读取并解释存储在存储器中的指令
  处理器的操作主要是围绕程序计数器、算术/逻辑运算单元、主存来进⾏运作的。处理器⾸先从PC所指向的主存存储单元读取指令,解释指令中的位,执⾏该指令指⽰的简单操作,然后更新PC寄存器,使其指向下⼀条要执⾏的指令。CPU会执⾏的操作有:
  加载:把⼀个字节或⼀个字从主存复制到寄存器,覆盖掉寄存器中原来的值。
  存储:把⼀个字节或⼀个从寄存器复制到主存,并覆盖主存中原来的值。
  操作:把两个寄存器的内容复制到ALU,ALU对两个字做算术运算后存回其中的⼀个寄存器,该寄存器中原来的值会被覆盖。
  跳转:从cpu执⾏的指令抽取⼀个字的内容存⼊PC,覆盖掉原来的值,从⽽改变下⼀条要执⾏的指令,达到跳转的⽬的。
  hellow,world程序⾸先被加载,从磁盘中复制到寄存器中,寄存器将hwllow,world程序复制到主存中进⾏存储。程序运⾏过程
中,CPU执⾏hellow,world机器指令,指令的结果是将”hellow,world”字符由内存复制到寄存器,寄存器再将结果复制到显⽰设备上显⽰出来。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。