zoukankan      html  css  js  c++  java
  • 浅谈 C# CLR 执行模块

    前言:
      买了这本 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 反编译出来看看,也可以看看国外一些专门做编译器的公司,此文不对编译过程做解释;
  • 相关阅读:
    当当网首页——JS代码
    当当网首页——CSS代码
    离散与连续 分度值
    timepicker php strtotime 8hours
    w[wi].disabled = true;
    Browser Cookie Limits
    FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)
    递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
    从交集角度考虑订房系统的时间连续性
    glup 压缩图片
  • 原文地址:https://www.cnblogs.com/loongsoft/p/7278343.html
Copyright © 2011-2022 走看看