
编译阶段和JIT编译阶段
运行时必须经过两个阶段(如下图所示)
1)编译阶段:在编译使用NET 框架创建的代码时,不是立即创建 *** 作系统特定的本机代码,而是把代码编译为微软中间语言(Microsoft Intermediate Language,MSIL)代码,这些MSIL代码不专用于任何一种 *** 作系统,也不专用于任何一种语言,有些类似于JAVA的字节码。C#及其他NET语言,如VBNET在编译阶段都编译为这种语言。
2)JIT编译阶段因为代码在编译阶段没有直接编译成本机代码,所以在执行应用程序时,必须完成更多的工作,这就是Just In Time(JIT)编译器的任务。JIT把MSIL编译为专用于某种 *** 作系统和目标机器结构的本机代码,只有这样, *** 作系统才能执行应用程序。这里编泽器的名称Just In Time,反映了MSIL仅在需要时才编译的特性。
编译前端主要包括词法分析、语法分析、语义分析、中间代码生成这几个部分,后端则包含代码优化和目标代码生成部分。前端的特点是仅与编译的源语言有关,而后端则仅与编译的目标语言及运行环境有关。 将编译过程划分成前端和后端,主要目的是在多
编译过程分为分析和综合两个部分,并进一步划分为词法分析、语法分析、 语义分析、 代码优化、存储分配和代码生成等六个相继的逻辑步骤。
这六个步骤只表示编译程序各部分之间的逻辑联系,而不是时间关系。编译过程既可以按照这六个逻辑步骤顺序地执行,也可以按照平行互锁方式去执行。在确定编译程序的具体结构时,常常分若干遍实现。对于源程序或中间语言程序,从头到尾扫视一次并实现所规定的工作称作一遍。
编译程序
也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。
以上就是关于C#程序在运行时,必须经过_____和______两个阶段全部的内容,包括:C#程序在运行时,必须经过_____和______两个阶段、编译程序的后端由哪些阶段构成,它们的特点是什么、编译为什么要分阶段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)