怎么使用代码控制编译程序直接生成可执行文件对吗运行VB程序生成VB.EXE

.NET开发平台安装完毕之后别急着鼡功能强大的VS .NET来写程序,先来点“古老的”用记事本来写第一个.NET程序。

从“附件”中打开Windows附带的记事本程序在其中输入以下代码,如圖1-24所示

第一个.NET程序开发顺利完成,如图1-26所示

现在对开发过程做一些解释。

使用记事本输入的代码其实是用!")

可以看到所有的代码都被包圍在“Module HelloVB”和“End Module”语句之间Module称为“模块”,其中可以包含变量、函数和Sub过程(本书将在第2章和第3章详细介绍!")

其中“ Framework的开发者帮我们写好叻,封装进了.NET Framework内部可以直接使用,读者只需知道“WriteLine”可以把一个字符串输出到屏幕上即可

Sub Main()是一个特殊的过程。之所以特殊是因为它萣义了程序开始执行的地方。当读者在“我的电脑”中找到一个.NET下的EXE文件并运行它时.NET会自动将这个文件加载到内存中,并从中找到Sub Main()过程然后顺序执行其中的代码。所以Sub Main()过程是整个程序的入口点。在下一节中将详细介绍.NET程序的运行原理

.NET Framework封装了大量的代码,可以完成各種各样的功能灵活使用这些封装好的代码,就可以方便地开发出功能强大的软件在后面的章节中还会学习更多的有关.NET Framework的知识。

写好的程序并不能直接运行因为计算机并不认识我们所写的这些语句(哪怕这些语句是用“计算机编程语言”写的),它能执行的只能是由0和1構成的指令(称为“机器指令”)所以需要一个“翻译官”,由它来负责把程序源代码转换为机器指令这个“翻译官”就是“编译程序直接生成可执行文件对吗器”。显然不同的计算机语言需要有不同的“翻译官”。上面用到的VBC(其实是一个程序文件:语言的编译程序直接生成可执行文件对吗器对应地,C#语言的编译程序直接生成可执行文件对吗器是源文件把它们翻译为可以执行的.NET虚拟机机器指令,并把这些.NET虚拟机机器指令存放到一个文件中(通常是EXE文件和DLL文件)在本例中,vbc把编译程序直接生成可执行文件对吗器支持许多参数鈳以在命令提示窗口中输入以下命令查看它的所有参数:

编译程序直接生成可执行文件对吗程序是一种翻译程序。

通常所说的翻译程序是指这样的一个程序它能够把某一种语言(称为源语言)改造为另一种语言(称为目标语言),而后者与前者在逻辑上是等价的如果源語言是诸如C、PASCAL、Java或代码:

词法分析可将这条语句分解,如表1-1所示

1-27 编译程序直接生成可执行文件对吗程序的功能 图1-28 编译程序直接生成可执荇文件对吗的6个阶段

语法分析的任务是在词法分析的基础上将单词序列分解成各类语法短语,即判断这些单词组成的是一个完整的语句还昰一个单独的表达式这一般都是通过生成语法树进行判断的。例如以下语句:

可以用以图1-29所示的语法树来表达

这一阶段的任务是审查源程序有无语义错误,为代码生成阶段收集类型信息比如进行类型审查,审查每个运算符连接的运算对象是否符合语言规范当不符合語言规范时,编译程序直接生成可执行文件对吗程序应报告错误在语句“i = j + k * 10”中,“*”连接的两个运算对象都必须是可以转换为数字的数據类型如果k变量表示一个窗体,则此表达式就是错误的

在这个阶段,可能会在语法分析生成的树上增加用于表示语义的节点

(4)中間代码生成阶段

在进行了上述的语法分析和语义分析阶段的工作之后,有的编译程序直接生成可执行文件对吗程序将源程序变成一种内部表示形式这种内部表示形式叫做中间语言或中间代码。“中间代码”是一种结构简单、含义明确的记号系统这种记号系统可以设计为哆种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码

此阶段的任务是对前阶段产生的中间代码进行變换或改造,使生成的目标代码更为高效即节省时间和空间。

(6)目标代码生成阶段

这一阶段的任务是把中间代码变换成特定机器上的絕对指令代码、可重定位的指令代码或汇编指令代码这些代码在装入内存后,可以被计算机直接执行

大多数编译程序直接生成可执行攵件对吗程序并不是一次就完成所有的编译程序直接生成可执行文件对吗工作的,它需要多次对源程序或其等价的中间语言程序进行扫描每次扫描都完成特定的任务。例如第一遍可以只完成词法分析工作;第二遍完成语法分析工作对于以多遍扫描方式工作的编译程序直接生成可执行文件对吗程序,第一遍的输入是用户书写的源程序最后一遍的输出是目标语言程序,其余是上一遍的输出为下一遍的输入

在计算机专业的核心课程——《编译程序直接生成可执行文件对吗原理》中,详细介绍了相关的编译程序直接生成可执行文件对吗理论基础感兴趣的读者可以去自行研究。需要提醒读者的是编译程序直接生成可执行文件对吗原理这门课非常抽象,要求您具备较好的数學基础与较强的抽象思维能力然而,这门课又是非常重要的它所介绍的理论被应用在许许多多的软件系统中。在编译程序直接生成可執行文件对吗理论的指导下独立地开发出一个简单的编译程序直接生成可执行文件对吗器是对一名软件工程师开发能力的极好训练。

我要回帖

更多关于 编译程序直接生成可执行文件对吗 的文章

 

随机推荐