1:公共语言运行时(Common Language Runtime,CLR)是一个可由多种编程语言使用的“运行时”。CLR的核心功能(比如内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用;

2:C#源代码文件---》C#编译器---》托管模块(中间语言IL和元数据);无论选用哪个编译器,结果都是一个托管模块;托管模块是一个标准的32位可移植执行体(PE32)文件,或者是一个标准的64位Windows可移植执行体(PE32+)文件,它们都需要CLR才能执行;

3:托管模块各个组成部分:(1)PE32或PE32+头;PE32文件头能在32位或64位版本上运行,PE32+文件头只能在64位版本上运行; (2)CLR头;包含使这个模块成为一个托管模块的信息(比如CLR版本,一些标志flag,托管模块入口方法Main方法的MethodDef元数据标记等);(3)元数据;每个托管模块都包含元数据表,主要有两种类型的表,一种是类型的表描述源代码中定义的类型和成员,另一种描述源代码引用的类型和成员;(4)IL中间语言代码;编译器编译源代码生成的代码,运行时CLR将IL编译成本地CPU指令;

4:CLR目前作为.NET Framework的一部份提供

5:要知道是否已安装.NET Framework,只需检查%SystemRoot%\System32目录中的MSCorEE.dll文件,存在文件表明已安装;查看安装哪些版本的.NET Framework检查注册表(regedit)项的子项:KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

6:IL转化成本地CPU指令:第一次:EXE/DLL--》JITCompiler--》编译成本地CPU指令--》保存到一个动态分配的内存块中  以后:直接执行内存块中的代码,完全跳过JITCompiler函数 (一个方法只有在首次调用时才会造厉一些性能损失。以后所调用都以本地代码的形式全速运行,无需重新验证IL并把它编译成本地代码,但若应用程序终止,编译好的代码也会被丢弃,JIT编译器必须再次将IL编译成本地指令);

7:程序在Debug模式下,编辑器才会生成一个Program Database(PDB)文件。PDB文件帮助调试器查找局部变量并将IL指令映射到源代码;

8:NGen.exe可以将应用程序的所有程序集(或者那个指定的程序集)的IL代码会编译成本地代码;

9:平台选择性不同:

10:修饰符范围

CLR_Via_C#学习笔记之CLR的执行模型的更多相关文章

  1. 01.由浅入深学习.NET CLR 基础系列之CLR 的执行模型

    .Net 从代码生成到执行,这中间的一些列过程是一个有别于其他的新技术新概念,那么这是一个什么样的过程呢,有什么样的机制呢,清楚了这些基本的东西我们做.Net的东西方可心中有数.那么,CLR的执行模型 ...

  2. 第一章 CLR 的执行模型

    CLR via C# 读书笔记:第一章 CLR 的执行模型(1) 第Ⅰ部分CLR基础.这部分为三章(第一章:CLR的只想能够模型,第二章:生成.打包.部署和管理应用程序及类型,第三章:共享程序集和强命 ...

  3. JVM学习笔记:字节码执行引擎

    JVM学习笔记:字节码执行引擎 移步大神贴:http://rednaxelafx.iteye.com/blog/492667  

  4. CLR 的执行模型(2)

    第一章 CLR 的执行模型(2) 本篇内容大纲 Framework 类库(Framework Class Library , FCL) 通用类型系统(Common Type System,CTS) 公 ...

  5. CLR_Via_C#学习笔记之枚举

    CLR_Via_C#学习笔记之枚举 枚举类型(Enum)定义的一组"符号名称/值"配对:因为枚举类型使用程序更容易编写.阅读和维护,而且它是强类型: 枚举是值类型:由System. ...

  6. GIS案例学习笔记-多边形内部缓冲区地理模型

    GIS案例学习笔记-多边形内部缓冲区地理模型 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 目的:对于多边形,建立内部缓冲区. 问题:ArcGIS缓冲工具不支持内部 ...

  7. CLR via C#读书笔记一:CLR的执行模型

    CLR(Common Language Runtime)公共语言进行时是一个可由多种编程语言使用的“进行时”. 将源代码编译成托管模块 可用支持CLR的任何语言创建源代码文件,然后用对应的编译器检查语 ...

  8. 《Master Bitcoin》学习笔记02——比特币的交易模型

    比特币的交易模型 模型基本描述 前面一篇学习笔记01提到了一个交易模型(第三章的内容),在第五章中,除了对这个模型做个详细介绍之外,其实和我上一篇理解的交易模型差不多,一个交易包含输入与输出,比特币是 ...

  9. 【C#进阶系列】01 CLR的执行模型——一个Hello World的故事

    好吧,废话少说,先上一章Hello World图: 我们有了一个Hello world程序,如此之简单,再加上我今天没有用汉字编程o(>﹏<)o,所以一切很简单明了. 故事开始: 编译: ...

随机推荐

  1. [P1768]天路(分数规划+SPFA判负环)

    题目描述 “那是一条神奇的天路诶~,把第一个神犇送上天堂~”,XDM先生唱着这首“亲切”的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量后,这道猥琐的题目终于出现在本次试题上了 ...

  2. bzoj 4097: [Usaco2013 dec]Vacation Planning

    4097: [Usaco2013 dec]Vacation Planning Description Air Bovinia is planning to connect the N farms (1 ...

  3. hdu 1569 最小割

    和HDU 1565是一道题,只是数据加强了,貌似轮廓线DP来不了了. #include <cstdio> #include <cstring> #include <que ...

  4. Spring在bean配置文件中定义电子邮件模板

    在上一篇Spring电子邮件教程,硬编码的所有电子邮件属性和消息的方法体中的内容,这是不实际的,应予以避免.应该考虑在Spring bean 配置文件中定义电子邮件模板. 1.Spring的邮件发件人 ...

  5. Eclipse:The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path

    我们在用Eclipse进行Java web开发时,可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not found on t ...

  6. jQuery向父辈遍历的方法

      通过DOM树可以可容易的访问到html文档中的所有元素 例如向上访问父辈的元素有以下方法 1.parent()方法可以得到所定元素的直接父元素 $("span").parent ...

  7. [0day]基础工具学习

    事实上非常多工具多少都使用的比較熟悉了. 可是仍有一些点还是比較有趣以及我不知道的.毕竟第一章,查缺补漏的. (话说这个成语在高三冲刺的时候,老师用得最多,当时还非常悲哀的一直补东墙.漏西墙.始终认为 ...

  8. java自动识别上传的apk版本号

    import java.util.List; public class ApkInfo { private String versionCode; private String versionName ...

  9. redis.conf配置解释

    daemonize:如果需要在后台运行,把该项改为yespidfile:配置多个pid的地址,默认在/var/run/redis.pidbind:绑定ip,设置后只接受来自该ip的请求port:监听端 ...

  10. 通过 WCF 实现点对点文件共享 z

    下载免费的项目源代码 下载项目的数据库 目录 简介 背景 为什么是WCF? WCF历史简述 WCF基础 点对点概念 代码分析(它是怎么工作的) 核心转化引擎层 下载管理层 服务层 代码的使用(如何运行 ...