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. [Codeforces #172] Tutorial

    Link: Codeforces #172 传送门 A: 一眼看上去分两类就可以了 1.每个矩形只有两条边相交,重合的形状为菱形 2.每个矩形四条边都有相交 对于情况1答案为$h*h/sin(a)$ ...

  2. Python入门,以及简单爬取网页文本内容

    最近痴迷于Python的逻辑控制,还有爬虫的一方面,原本的目标是拷贝老师上课时U盘的数据.后来发现基础知识掌握的并不是很牢固.便去借了一本Python基础和两本爬虫框架的书.便开始了自己的入坑之旅 言 ...

  3. USACO 2017 FEB Platinum mincross 可持久化线段树

    题意 上下有两个位置分别对应的序列A.B,长度为n,两序列为n的一个排列.当Ai == Bj时,上下会连一条边.你可以选择序列A或者序列B进行旋转任意K步,如 3 4 1 5 2 旋转两步为 5 2 ...

  4. WampServer -- “You don't have permission to access /phpmyadmin/ on this server.”

    当你安装完成wamp后,打开localhost或ip时发现已经可以运行了 但想使用phpmyadmin时,发现提示如下内容: You don't have permission to access / ...

  5. acdream 1725 哗啦啦的小彭玉染色问题 离散化并查集

    哗啦啦的小彭玉染色问题 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1725 Descri ...

  6. Java获取服务器IP和客户端IP

    服务器IP: String addr = InetAddress.getLocalHost().getHostAddress(); 说明:很明显上面是没考虑到服务器有多个iP的情况. 客户顿啊IP: ...

  7. IOS定位核心与地图

    IOS定位核心与地图                 Core Location以及Map框架包通常能给我们的应用程序添加定位和地图相关的服务.Core Location框架包通常是使用硬件设备来进行 ...

  8. boost.python编译及演示样例

    欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/46781581 linux编译boost的链接:http://bl ...

  9. 在apache环境中使用 python stock 请求遇到error: [Errno 13] Permission denied

    一个python 项目运行在linux 环境下,使用apache做为web容器. 调用urllib2.urlopen(your url) 或者 xmlrpclib.ServerProxy()请求某个服 ...

  10. 【jQuery】select动态追加的option选中

    var turnUpHidden = $("input[name='turnUpHidden']").val(); if(turnUpHidden != "") ...