首页 > 【CLR的执行模型:将源代码编译成托管模块】

【CLR的执行模型:将源代码编译成托管模块】

CLR:由多种不同编程语言使用的运行库

托管模块:中间语言和元数据

非托管语言:C/C++,不过此为特殊,可以写成托管代码

托管语言:C#

 


托管模块

1,PE32/PE32+头:PE32运行在win32位系统中,win32+运行在64位系统

2,CLR头,包括CLR版本,方法入口main,元数据标记,元数据,资源,名称

3,IL代码:CLR将IL编译成本地cpu指令


图:

 


总结:在net的CLR(公共语言运行库)中包括托管语言(C#)和非托管语言(例如C++),两者到底什么区别.下面以数组为例

C#初始化数组不必考虑内存分配问题,如果你用反汇编工具可以看到IL代码,会自动分配内存大小

C++则与此不同,你需要事前分配合适大小再去处理

其次,CLR到底干嘛的?比如异常处理程序,你可以用C/c++/VB/C#/F#等不同语言编程,但是最终都要通过相应的编译器编译成IL(中间语言),然后调用底层异常处理程序。其为公用的一类程序仓库。整个源代码编译成托管模块的过程是,源代码(C#)在完成后,运行时经过相应的(C#)编译器编译成中间语言,生成相应托管模块(中间语言和元数据)的 整个过程

转载于:https://www.cnblogs.com/baiboy/archive/2013/03/04/2942597.html

更多相关:

  • 什么是操作系统 操作系统位于计算机硬件与应用软件之间 是一个协调 管理 控制计算机硬件资源与软件资源的控制程序   为何要有操作系统? 1 控制硬件 2 把对硬件的复杂的操作封装成优美简单的接口(文件),给用户,或者应用程序去使用   注意:一套完整的计算机系统包含三部分   应用程序   操作系统:个人windows,公司linux...

  • 前些天在看一本书,温伯格的《理解专业程序员》,其中提到有的程序员得了第二语言综合征——在学习第三、第四门语言的时候很容易,但是学习第二门简直能要了他们的命。我当时就确定我患了这个毛病,因为我一直想了解Java语言,但迟迟不愿开始,以前一直不知道为什么这么难开始,现在终于豁然开朗。把这本书读完不久,书很薄,我就开始计划打破这个综合征,第...