摘要: 1. NGen.exe工具,可以在一个程序安装到用户计算机时,将IL代码编译成为本地代码。由于代码在安装时已经编译好,所以CLR的JIT编译器不需要再运行时编译IL代码了,这有助于提升程序的性能。2. NGen.exe可以加快程序的启动速度,减少程序的工作集。3. NGen.exe生成的文件存在以下问题: 1)没有知识产权保护。在运行时,CLR要求访问程序集的元数据,这就要求同时发布包含IL代码和元数据的程序集。 2)NGen生成的文件可能失去同步。NGen生成的文件时,会与当前执行环境相适应的,当你改变了先前的执行环境时,NGen生成的文件就不能使用了。 3)较差的执行时性能。NGen... 阅读全文
posted @ 2014-01-17 16:18 烧点饭 阅读(776) 评论(0) 推荐(1) 编辑
摘要: 1. 托管程序集同时包含元数据和IL。IL是与CPU无关的机器语言。可将IL是为一种面向对象的机器语言。2. IL也是能使用汇编语言来写的,MicroSoft专门提供了一个名为ILAsm.exe的IL汇编器和一个名为ILDasm.exe的IL反汇编。3. 高级语言只公开了CLR的所有功能的一个子集,IL汇编语言允许开发人员访问CLR的所有功能。如果你需要当前使用的语言不支持的CLR功能,可以使用IL语言或者其他CLR语言。4. 为了执行一个方法,首先必须将它的IL转换成为本地CPU指令,这是CLR的JIT(just-in-time或"即时")编译器的职责。5. 展示一个方法 阅读全文
posted @ 2014-01-17 16:01 烧点饭 阅读(478) 评论(0) 推荐(0) 编辑
摘要: 1. 你生成的每个程序集可以是EXE,也可以是DLL。最终都是有CLR管理这些程序集中代码的执行。2. VS2010中,创建新的EXE项目时,默认平台是x86,而不是anycpu。3. Windows的64位版本提供了一个名为WoW64(Windows on Windows64)的技术,允许允许32位的Windows程序。这是因为这个技术能模拟x86的指令集,但这样会显著影响性能。4. 编译目标平台对生成的模型的影响以及运行时的影响。5. Windows检查好EXE文件头,决定创建32位、64位还是WoW64进程之后,会在进程的地址空间中加载MSCorEE.dll的x86,x64或IA64版本 阅读全文
posted @ 2014-01-17 15:03 烧点饭 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 1.CLR是不和托管模块一起工作的,CLR是和程序集一起工作的。2. 程序集是一个或多个托管模块/资源文件的逻辑性分组。3. 程序集是重用、安全性以及版本控制的最小单位。4. 程序集取决于你对编译器的选择,可以生产单文件程序集,也可以生产多文件程序集。在CLR中,程序集相当于一个"组件"。5.将托管模块合并成程序集图示:生成的 程序集会包含一个名为"清单"(maniest)的数据块。清单是有元数据构成的另一种集合。这些表描述了构成程序集的文件。6. 默认情况下,编译器实际会把生成的托管模型转化成程序集。C#编译器会生成含有清单的一个托管模块。清单指出程序 阅读全文
posted @ 2014-01-17 14:50 烧点饭 阅读(806) 评论(0) 推荐(0) 编辑
摘要: 1.公共语言运行时(Common Language Runtime,CLR)是一种可由多种编程语言使用的"运行时"。2. CLR的核心功能(比如内存管理,程序集加载、安全性、异常处理和线程同步等)可由面向CLR的所有语言使用。3. 用一个对应的编译器编译源代码之后,结果都是一个托管模块。4.托管模块是一个标准的32/64位Microsoft Windows 可移植执行体(PE32/PE32+)文件,它们都需要CLR才能执行。5. 托管的程序集利用Windows的数据执行保护和地址空间布局随机化增强整个系统的安全性。6. 托管模块的各个组成部分7. 本地代码编译器生成的是面向 阅读全文
posted @ 2014-01-17 14:30 烧点饭 阅读(629) 评论(0) 推荐(1) 编辑