开始执行程序时,必须先给迟塌程序计数器PC赋以第一条指令的首地址00H,然后就进入第一条指令的取令的取指令阶段。
第一条指令的执行过蚂埋程:
取指令阶段:
①将程序计数器PC的内容(00H)送至地址寄存器AR,记为PCAR。
②程序计数器PC的内容自动加1变为01H,为取下一个指令字节作准备,记码物圆为PC+1PC。
③地址寄存器AR将00H通过地址总线送至存储器,经地址译码器译码,选中00号单元,记为ARM。
④CPU发出"读"命令。
⑤所选中的00号单元的内容B0H读至数据总线DB,记为(00H)DB。
⑥经数据总线DB,将读出的B0H送至数据寄存器,记为DBDR。
⑦数据寄存器DR将其内容送至指令寄存器IR,经过译码,控制逻辑发出招待该条指令的一系列控制信号,记为DRIR,IRID、PLA。经过译码,CPU"识别"出这个 *** 作码就是MOVA,03指令,于是,它"通知"控制器发出执行这条指令的各种控制命令。
一个源程序到一个可执行程序的过程:预编译、编译、汇编、链接。其中,编译是主要部分,其中又分为六个部分:词法分析、语法分析、语义分析、中间代码生成、目标代码生成和优化。
预编译:主要处理源代码文件中的以“#”开头的预编译指令。处理规则如下:
1、删除所有的#define,展开所有的宏定义。
2、处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。
3、处理“#include”预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件中包含其他文件。
4、删除所有的注释,“//”和“/**/”。
5、保留所有的#pragma 编译器指令,编译器需要用到他们,如:#pragma once 是为了防止有文件被重复引用。
6、添加行号和文件标识,便于编译时编译器产生调试用的行号信息,和编译时产生编译错误或警告是能够显示行号。
扩展资料:
编译过程中语法分析器只是完成了对表达式语法层面的分析,语义分析器则对表达式是否有意义绝派进行判断,其分析的语义是静态语义——在编译期能分期的语义,相对应的动态语义是在运行期才能确定的语义。
其中,静态语义通常包括:声明和类敏瞎型的匹配,类型的转换,那么语义分析就会对这些方面进并拿贺行检查,例如将一个int型赋值给int*型时,语义分析程序会发现这个类型不匹配,编译器就会报错。
取指令、分析指令、执行指令、取下一条指令。
1、首先是取指令和分析指令。按照程序规定的次序,从内存储器取出当前执行的指令。
2、送到控制器的指令寄存器中,对所取的指令进行分析,即根据指令中的 *** 作码确定计算机应进行什么 *** 作。
3、根据指令分析结果,由控制器发出完成 *** 作所需的一系列控制电位,以便指挥计算机有关部件完成这一 *** 作。
4、为下一条取指令作好准备。
控制器靠指令指挥机器工作,人们用指令表达自己的意图,并交给控制器执行掘丛州。一台计算机所能执行的各种不同指令的全判蔽体,叫做计算机的指令系统,每一台计算机均有自己的特定的指令系统,其指令内容和格式有所不同。
扩展资料:
在计算机中, *** 作要求和 *** 作数地址都由二进制数码表示,分别称作 *** 作码和地址码,整条指令以二进制编码的形式存放在存储器中。
指令的种类和多少与具体的机型有关,在此不详述,请参见具郑芹体的机器资料手册。
指令的顺序执行,将完成程序的执行,因而有必要了解指令的执行过程。首先是取指令和分析指令。按照程序规定的次序,从内存储器取出当前执行的指令,并送到控制器的指令寄存器中,对所取的指令进行分析,即根据指令中的 *** 作码确定计算机应进行什么 *** 作。
其次是执行指令。根据指令分析结果,由控制器发出完成 *** 作所需的一系列控制电位,以便指挥计算机有关部件完成这一 *** 作,同时,还为取下一条指令作好准备。
参考资料来源:百度百科--计算机指令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)