摘要: NGen.exe工具,将一个应用程序集的所有IL代码编译成本地代码,并将这些代码保存到一个磁盘文件中,可以避免在运行时进行编译。1.4.1 IL是基于栈的,这意味着它的所有指令都要将操作数压入push一个执行栈, 并从栈弹出pop结果,IL指令是“无类型”的。将IL编译成本地cpu指令时,CLR会执行验证,以保证代码是安全无错的,在托管模块的元数据中,包含了要由验证过程使用的所有方法和类型信息。1.4.2 不安全的代码不安全的代码允许直接操作内存地址,并操作这些地址出的字节。用unsafe关键字标注,/unsafe。PEVerify.exe检查一个程序集的所有方法,并报告其中含有的不安全代码的 阅读全文
posted @ 2011-03-19 19:24 dotNet_Fan 阅读(231) 评论(0) 推荐(0)
摘要: 1.3加载公共语言运行时CLR:程序集可以是一个exe,也可以是一个dll(其中包含一组由exe使用的类型)如果程序集只包含类型安全的托管代码,那么所有代码能在32位或64位的windows系统上运行。如果要用不安全的代码或面向特定cpu的非托管代码,那么可使用/platform指定运行环境,默认为anycpu:任何windows版本。运行一个exe时,windows会检查这个exe的文件头,判断需要32位地址空间或64位,根据PE32或PE32+。然后windows会在进程的地址空间中加载MSCOREE.dll的X86或X64版本(分别位于不同目录中),接着,进程的主线程调用MSCOREE. 阅读全文
posted @ 2011-03-19 14:30 dotNet_Fan 阅读(311) 评论(0) 推荐(0)