码迷,mamicode.com
首页 > Windows程序 > 详细

浅谈 C# CLR 执行模块

时间:2017-08-03 11:15:36      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:via   ide   ges   time   开发语言   依赖   一个   部分   模块   

前言:
  买了这本 CLR via C# 已有些日子了,但是一直没有认真翻过这本书,以前学的知识点都忘光了。
  趁着现在下着雨的周末,大体记录一下今天了解的笔记,也好弥补一下 C# 知识上的一些盲点。
 
编译/执行过程:
  C# 发展史、借助于谁谁谁,废话都跳过,看图:
  技术分享

  // 注明:为了节省时间,此图非 书中原图;

 

  名词注解:
  CLR:公共语言运行时(Common Language Runtime),是多种语言使用的“运行时”,只运行(解释)托管模块(IL)
    // .NET 下受托管的 dll、exe 文件需要依赖于 CLR 才能解释运行;(也是所谓的 C# 虚拟机 解释型语言)
  IL:中间语言(Intermediate Language);编译器编译源代码时生成的代码。在运行时,CLR 将它编辑成本机 CPU 指令;
    // C#、VB 等编译器,编译出的文件(程序集)IL,又称“托管模块”(包含中间语言和元数据)
    托管模块组成部分:
      托管头标识(PE32、PE32+)理解成 x32、x64;
      CLR 头,包含要求的 CLR 版本等一些标识信息;
      元数据:描述源代码中定义类和成员、以及代码引用的类和成员;      // Visual Studio IDE 的智能感知提示,就是通过它。
  JIT:CLR 编译器,负责将 IL 编译成本机机器代码(CPU 指令);
    // JITCompiler 时会将本机代码进行优化后再度丢给 CPU 执行;
 
     // C# 编译器已经优化的非常不错了,一个开发语言的好坏多半都取决于他们的编译器做的好坏。
     // 感兴趣的用 IL_DASM 反编译出来看看,也可以看看国外一些专门做编译器的公司,此文不对编译过程做解释;

浅谈 C# CLR 执行模块

标签:via   ide   ges   time   开发语言   依赖   一个   部分   模块   

原文地址:http://www.cnblogs.com/loongsoft/p/7278343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!