1 / 3
文档名称:

程序是怎么从代码到执行的.docx

格式:docx   大小:35KB   页数:3页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

程序是怎么从代码到执行的.docx

上传人:坐水行舟 2019/1/19 文件大小:35 KB

下载得到文件列表

程序是怎么从代码到执行的.docx

相关文档

文档介绍

文档介绍:程序是怎么从代码到执行的电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。人们只能写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。但是人为编制机器语言繁杂单调,而且容易出错。于是为了减轻使用机器语言编程的痛苦,人们发明汇编语言。汇编语言用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。汇编指令和机器语言之间有着一一对应的关系,程序可以很容易把它编为计算机能够识别的机器语言。 像c/c++,pythen等这一类语言为高级语言,它偏向人,是按照人的思维方式设计的,机器看不懂高级语言,必须要有一个桥梁来衔接两者。如图:于是C/C++这样的语言无法直接都读出,需要经过编译成计算机可执行代码。编译是将源代码转换为机器可认识代码的过程,大致分为源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件。这个过程大致分为以下几个步骤:,将高级语言指令转换为功能等效的汇编代码。编译器读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括以下四个方面:(1)宏定义指令,如# define Name TokenString,#undef等。对于前一个伪指令,预编译所要作得的是将程序中的所有Name用TokenString替换,但作为字符串常量的Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的出现不再被替换。 (2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif,等等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉。 (3)头文件包含指令,如#include "FileName"或者#include <FileName>等。采用头文件的目的主要是为了使某些定义可以供多个不同的源程序使用。因为在需要用到这些定义的源程序中,只需加上一条#include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。(4)特殊符号,预编译程序可以识别一些特殊的符号。例如在源程序中出现的LINE标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。经过替换,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。,将只有常量。如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,},+,-,*,\,等等。预编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示