第一章、 CLR的执行模型
1. 概述
本章主要是介绍从源代码到可执行程序的过程中,CLR所做的工作。
2. 名词解释
① 公共语言运行时(Common Language Runtime, CLR),是一个可由多种语言使用的 运行时,核心功能(内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。
② PE32:32位 Microsoft Windows 可移植执行体。
PE32+:64位 Microsoft Windows 可移植执行体。
③ 元数据 是一组数据表,这些数据表描述了 模块中定义的内容 或者 托管模块引用的内容。
④ 托管模块 是一个标准的PE32或者PE32+文件,他们都需要CLR才能执行。由 PE32(+)头、CLR头、元数据 及 IL中间代码 组成。
⑤ 程序集 是一个或多个模块/资源文件的逻辑性分组,是重用、安全性以及版本控制的最小单元。
⑥ 清单(manifest) 是由 元数据表 构成的另一种集合,描述了构成程序集的文件。
⑦ 本地代码生成器(NGen.exe),将IL代码编译成本地代码。
⑧ Framework类库(FCL),Microsoft发布的一组DLL程序集的统称。
⑨ 通用类型系统(Common Type System, CTS):Microsoft制定的,描述类型定义和行为的规范。
⑩ 公共语言规范(Common Language Specification, CLS): 定义了一个最小功能集。任何编译器生成的类型要想兼容于由其他“符合CLS、面向CLR“的语言所生成的组件,就必须支持这个功能集。
3. 执行过程
① 将源代码编译成托管模块。
② 将托管模块合并成程序集。(程序集链接器AL.exe)
③ 加载公共语言运行时。
④ 执行程序集的代码。
CLR的JIT(just-in-time)编译器将IL转换成本地cpu指令。
一次编译,多次运行。期间进行代码优化。
⑤ 与非托管代码的互操作性。
4. 总结
介绍CLR相关的各个部分,概述CLR的执行逻辑。
第一章、 CLR的执行模型的更多相关文章
- 第一章 CLR 的执行模型
CLR via C# 读书笔记:第一章 CLR 的执行模型(1) 第Ⅰ部分CLR基础.这部分为三章(第一章:CLR的只想能够模型,第二章:生成.打包.部署和管理应用程序及类型,第三章:共享程序集和强命 ...
- 第一章 CLR的执行模型
编译器将源代码编译为托管模块.托管木块包含: PE32或PE32+头 CLR头 元数据 IL(中间语言)代码 PE32头的文件可在32或64位的电脑上运行,PE32+的只能在64上运行.Window6 ...
- 第一部分 CLR基础:第1章 CLR的执行模型
1.1将源代码编译成托管模块
- 第1章 CLR的执行模型
1.1将源代码编译成托管代码模块
- CLR 的执行模型(2)
第一章 CLR 的执行模型(2) 本篇内容大纲 Framework 类库(Framework Class Library , FCL) 通用类型系统(Common Type System,CTS) 公 ...
- 01.由浅入深学习.NET CLR 基础系列之CLR 的执行模型
.Net 从代码生成到执行,这中间的一些列过程是一个有别于其他的新技术新概念,那么这是一个什么样的过程呢,有什么样的机制呢,清楚了这些基本的东西我们做.Net的东西方可心中有数.那么,CLR的执行模型 ...
- 第一章 CLR执行模型
发现看过好几遍还是会忘记,因水平有限理解的不是很到位.欢迎各位大神及时指正. CLR执行模型 1.1编译器将源代码编译成托管模块 托管模块:是标准的windows可移植执行体文件(PE32(32位机器 ...
- 【C#进阶系列】01 CLR的执行模型——一个Hello World的故事
好吧,废话少说,先上一章Hello World图: 我们有了一个Hello world程序,如此之简单,再加上我今天没有用汉字编程o(>﹏<)o,所以一切很简单明了. 故事开始: 编译: ...
- 第一章 Java代码执行流程
说明:本文主要参考自<分布式Java应用:基础与实践> 1.Java代码执行流程 第一步:*.java-->*.class(编译期) 第二步:从*.class文件将其中的内容加载到内 ...
随机推荐
- 基于Ubuntu 14.04 LTS编译Android4.4.2源码
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS ...
- DeepLearningFlappyBird-深度学习玩游戏-1-环境搭建
-------------------------------------------------------------------------------------- https://githu ...
- svn服务器搭建与迁移
2016-11-21更新: 今天被svn的钩子搞了半天,网上找解决方法都无效,下午被我试出来了,特此记录. 在svn的钩子中可以使用update来更新配置文件,比如ansible的,puppet的,具 ...
- Python之如果添加扩展包
1.首先下载好你需要的扩展包 下载地址是http://www.lfd.uci.edu/~gohlke/pythonlibs/ 2.将你下载好的.whl文件放在你的python文件夹中的Lib\site ...
- sublime text3 3176激活
更改hosts sudo vim /etc/hosts 127.0.0.1 www.sublimetext.com 127.0.0.1 license.sublimehq.com 输入激活码 ---- ...
- hadoop-3.0.0-alpha4启动
全部启动或者全部停止(注意:第一次启动需要先格式,以后就不需要格式了,不能多次格式化) 1.启动 [root@master sbin]# pwd /usr/hadoop/hadoop-3.0.0-al ...
- Quartz2D绘图 及实例:下载进度
基础绘图: C语言coregraphics框架 绘制一条线:(不常用) UIBezierPath 路径画图 1.线段 线段2: 2.三角形 填充颜色 如果边框颜色和填充颜色都为红色:[[UICol ...
- RPi 2B IPC webcam server
/**************************************************************************** * RPi 2B IPC webcam se ...
- [Selenium] Selenium common Actions Examples
1.sendKeys() 在文本框中输入字符串 WebElement searchBox = driver.findElement(By.name("q")); searchBox ...
- Hadoop学习资料(持续更新)
Alex的Hadoop菜鸟教程 Hadoop资料合集 Hadoop平台和应用程序框架