前言:
买了这本 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 反编译出来看看,也可以看看国外一些专门做编译器的公司,此文不对编译过程做解释;

转载于:https://www.cnblogs.com/loongsoft/p/7278343.html

浅谈 C# CLR 执行模块相关推荐

  1. python sys模块作用_浅谈Python中的模块

    模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...

  2. 浅谈代码的执行效率(4):汇编优化

    终于谈到这个话题了,首先声明我不是汇编优化的高手,甚至于我知道的所有关于汇编优化的内容,仅仅来自于学校的课程.书本及当年做过的一些简单练习.换句话说,我了解的东西只能算是一些原则,甚至也有一些&quo ...

  3. 浅谈STM32的DMA模块的使用

    浅谈STM32的DMA模块的使用 转自:http://blog.ednchina.com/jack_chang/123085/message.aspx http://article.ednchina. ...

  4. ant man 什么意思_浅谈为什么很多蓝牙模块厂家选择nRF52832?

    浅谈为什么很多蓝牙模块厂家选择nRF52832? 现在蓝牙低功耗(BLE)SOC作为新一代蓝牙,以其低功耗的优势,正凸显出强大的市场竞争力,而其中Nordic公司的nRF52832这一款低功耗蓝牙芯片 ...

  5. android onclick执行顺序,浅谈onTouch先执行,还是onClick执行(详解)

    有一个Button 按钮,要想为该按钮设置onClick事件和OnTouch事件 mTestButton.setOnClickListener(new View.OnClickListener() { ...

  6. python如何导入requests模块_浅谈python中requests模块导入的问题

    浅谈python中requests模块导入的问题 今天使用Pycharm来抓取网页图片时候,要导入requests模块,但是在pycharm中import requests 时候报错. 原因: pyt ...

  7. 浅谈游戏服务器---功能模块上来看

    游戏服务器在网游上的作用不容考虑,游戏能做大到什么程度,还是有很大的依靠的,这篇文章先从功能模块的角度来谈一个完善的游戏服务器需要实现哪.     一:游戏服务器的作用:连接各个网游客户端,实现各客户 ...

  8. 浅谈代码的执行效率(3):缓存与局部性

    在前两篇文章里,我们讨论了程序性能的两个方面,一是算法(广义的算法,即解决问题的方法),二是编译器.通过这两个方面,我想表达的意思是,一段程序的执行效率,是很难从表面现象得出结论的,至少从一些简单的层 ...

  9. 浅谈代码的执行效率(2):编译器的威力

    在上一篇文章中,我主要表达了这样一个观点:影响程序效率的关键之一是算法,而算法的选择与优化,和是否多一个赋值少一个判断的关系不大.关于算法的选择,我谈到其理论上的复杂度,并不直接反映出效率.因为在实际 ...

  10. 浅谈代码的执行效率(1):算法是关键

    前一段时间在博客园里看到这样一篇文章,那位兄弟谈到程序效率的关键是"简短".他说,"程序越简短,其可执行代码就越少,就越有效率",而在编写程序的时候," ...

最新文章

  1. 卧槽,面试官质疑我不会配置中心原理,看不起谁呢?
  2. RGB_YUV_YCbCr
  3. linux如何修改权限详解
  4. 6月16号=》156页-160页
  5. HR只在这些时间里看你的简历!
  6. 1899-11-30 php mysql_PHP学习十一--PHP操作MYSQL数据库
  7. 第三周:浅层神经网络
  8. 【Android】Error:Execution failed for task ':app:lint'
  9. python 加干扰线 图片生成_用Python一键生成炫酷九宫格图片,火了朋友圈
  10. php getelement,javascript getElementByTagName的使用_javascript技巧
  11. 11g oracle 客户端驱动_oracle 11g 数据库驱动包
  12. 小说采集,采集笔趣阁小说网站(www.biquges.cc)
  13. TSNE 高维数据可视化
  14. YAPI工具入门手册
  15. python MyQR制作动态二维码
  16. 几何分布的众数为什么是1
  17. js bookmark doubanfm lyrics
  18. pycharm 更换 pip 下载源
  19. 个别网站无法访问,能ping通
  20. 盘点3种Python爬虫 中文乱码 的处理方法

热门文章

  1. 二、Oracle学习笔记:常用数据类型和关键字
  2. 7-7 mmh学长的大数模板 (20分)
  3. 定时任务莫名停止,Spring 定时任务存在 Bug??
  4. Spring Boot 2.x 集成 SLF4j + log4j2 日志框架
  5. TCP 理论概述与 Java 编码入门
  6. hdu6715 算术 2019百度之星初赛3-1003
  7. 阶段3 2.Spring_07.银行转账案例_2 案例中添加转账方法并演示事务问题
  8. Spring Boot详情
  9. CSS选择器 ~ +
  10. AC日记——幸运号码 51nod 1043