CLR Via C#: CLR 的执行模型】的更多相关文章

托管程序的执行模型大致如下: 编译源代码为程序集(dll或exe文件),程序集包括了记录相关信息的元数据和IL代码 执行程序集文件时,启动CLR,JIT负责把IL编译为本地代码并执行 IL是微软推出的一种面向对象的类似汇编指令集合的中间语言,无论是C#还是VB代码,经过不同的编译器可编译为无差别的IL,或者说单看IL代码是无法分辨出它是来自C#还是VB,IL类似于Java的.Class文件,该文件具有平台无关性,这使得.Net程序具备了像Java那样跨平台的条件. 程序集的组成及编译 程序集就是…
好好学习底层运行机制,从CLR via C# 开始. CLR的执行模型: CLR:Common Language Runtime,是一个可由多种编程语言使用的"运行时".CLR的核心功能(比如内存管理.程序集加载.安全性.异常处理和线程同步)可由面向CLR的所有语言(C#,Visual Basic,F#等)使用. 1.将源代码编译成托管模块: CLR根本不关心开发人员用那一种语言来写源代码,说明我我们写C#代码的时候肯定还经过一定的步骤才能跟CLR,于是就需要相应的面向CLR的.可以编…
.Net 从代码生成到执行,这中间的一些列过程是一个有别于其他的新技术新概念,那么这是一个什么样的过程呢,有什么样的机制呢,清楚了这些基本的东西我们做.Net的东西方可心中有数.那么,CLR的执行模型是一个什么样的过程呢? 将源代码编译成托管模块 --> 将托管模块合并成程序集 --> 加载公共语言运行时 --> 执行程序集的代码 目录 将源代码编译成托管模块 将托管模块合并成程序集 加载公共语言运行时 执行程序集的代码 本地代码生成器:NGen.exe Framwork类库入门 通用类…
第一章 CLR 的执行模型(2) 本篇内容大纲 Framework 类库(Framework Class Library , FCL) 通用类型系统(Common Type System,CTS) 公共语言规范(Common Language Specification,CLS) 总结 一.Framework 类库(Framework Class Library , FCL) 1.mscorlib.dll (Microsoft Core Library,微软核心类库) 我们先来看个例子.新建一个…
CLR via C# 读书笔记:第一章 CLR 的执行模型(1) 第Ⅰ部分CLR基础.这部分为三章(第一章:CLR的只想能够模型,第二章:生成.打包.部署和管理应用程序及类型,第三章:共享程序集和强命名程序集)大部分都是概念性的东西,看起来比较的枯燥无味,由于都是概念性的东西所以也比较难于理解,不过这些知识也是后面深入的前提,要想深入的了解.net平台及C#语言,这些概念性的知识也是必须懂得的.废话不多说了,咱们还是硬着头皮一起来看看第一章吧!由于一章内容较多,我会分开来写.本篇内容大纲: 将源…
CLR执行模型与常见的几个概念 一.CLR执行模型 1.1从代码到程序集 CLR执行的模型是从代码开始,经过编译器生成托管模块,默认情况下可以让多个托管模块和资源生成程序集.下图为其大致过程. 1.2执行程序集 当系统运行托管模块时会检查文件头,判断启用一个32位的进程还是64位的,然后会在其进程中加载对应的MsCorEE.dll,里面有个初始化CLR的一个方法,初始完CLR,加载程序集,进入程序入口方法.在执行Main方法之前,为了能让电脑运行程序,CLR必须让IL程序集转化成指令.首先CLR…
发现看过好几遍还是会忘记,因水平有限理解的不是很到位.欢迎各位大神及时指正. CLR执行模型 1.1编译器将源代码编译成托管模块 托管模块:是标准的windows可移植执行体文件(PE32(32位机器),或者PE32+(64位机器))它们需要CLR 才能执行 1.2 编译器将托管模块合并成程序集 托管模块有四个概念: PE32,PE32+文件 文件头 CLR头 :标识了要求的CLR版本.标识.托管模块入口方法 元数据 :数据表集合,一方面描述了模块定义的东东,另外一方面描述了引用的一些东东.东东…
Cp1CLR执行模型 本章的概念点 CLR=Common Language Runtime 内存管理,程序集加载,安全性,异常处理和线程同步.CLR是基础,支持着面向它的各种语言.各种语言会被对应的编译器转换为托管模块. 不同语言有各自的优点和不足. 在需要托管程序运行的电脑上必须安装CLR(.NET Framework). 托管模块managed module PE32,PE32+=portable Executable CLR头(CLR版本,标志,IL入口的标记,元数据,资源,强名称,其他)…
将源代码编译成托管模块 下图展示了编译源代码文件的过程.如图所示,可用支持 CLR 的任何一种语言创建源代码文件.然后,用一个对应的编译器检查语法和分析源代码.无论选用哪一个编译器,结果都是一个托管模块(managedmodule).托管模块是一个标准的 32 位 Microsoft Windows 可移植执行体(PE32)文件 6 ,或者是一个标准的 64 位 Windows 可移植执行体(PE32+)文件,它们都需要 CLR 才能执行.顺便说一句,托管的程序集总是利用了 Windows 的数…
博客园对markdown支持不佳,错乱移步Github IO 博文 CLR 的执行模型 模块/程序集 1.模块 托管模块组成部分 PE32/PE32+头 : PE即Portable Executable表示可执行文件 CLR头 : 包含所需的CLR版本,Main方法入口 元数据 : 元数据是一组数据表.其中的一些数据表描述了模块中定义的内容,比如类型或成员.还有一些描述了托管模块引用的内容,比如导入的类型.成员. IL代码 元数据用途 用于编译,消除了C/CPP时期对头文件的依赖 VS Inte…