第一章、 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文件将其中的内容加载到内 ...
随机推荐
- Android 图片着色 Tint 详解
问题描述 在app中可能存在一张图片只是因为颜色的不同而引入了多张图片资源的情况.比如 一张右箭头的图片,有白色.灰色和黑色三种图片资源存在.所以我们可不可以只保留一张基础图片,在此图片基础上只是颜色 ...
- codeforces A. Kitahara Haruki's Gift 解题报告
题目链接:http://codeforces.com/problemset/problem/433/A 题目意思:给定 n 个只由100和200组成的数,问能不能分成均等的两份. 题目其实不难,要考虑 ...
- springboot web项目搭建
1.选择spring initializr 2.填写应用名称及设置相关配置,建议使用默认配置即可 3.选择相关技术,我们现在web技术 4.填写项目名称 5.项目文件结构如下 6.直接运行 java ...
- codeforces 690C2 C2. Brain Network (medium)(bfs+树的直径)
题目链接: C2. Brain Network (medium) time limit per test 2 seconds memory limit per test 256 megabytes i ...
- string类中运算符重载实现
C++中预定义的加.减等运算符的操作对象只能是基本的数据类型.如果要在用户自定义的类型对象上应用同样的运算符,就需要通过运算符重载来重新定义其实现,使它能够用于自定义类型执行特定的操作,所以运算符重载 ...
- 【BZOJ 2818】 GCD
[题目链接] 点击打开链接 [算法] 线性筛出不大于N的所有素数,枚举gcd(x,y)(设为p),问题转化为求(x,y)=p的个数 设x=x'p, y=y'p,那么有(x,y)=1且 ...
- 【SDOI2009】SuperGCD
[题目链接] 点击打开链接 [算法] 1.关于求最大公约数的算法 若使用辗转相除法,那么显然会超时 不妨这样思考 : 要求gcd(a,b), 若a为偶数,b为偶数,则gcd(a,b) = 2 * gc ...
- java服务器端断点续传
Servlet Java代码 复制代码 收藏代码 import java.io.BufferedOutputStream; import java.io.File; import java.io.IO ...
- C++笔试题库之编程、问答题 100~150道
101. winsock建立连接的主要实现步骤? 答: 服务器端:socket()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接, accept()发现有客户端连 ...
- P5166 xtq的口令
传送门 这题要是搞懂在干什么其实不难(虽然某个花了几个小时才搞明白的家伙似乎没资格这么说--) 假设所有人都没有听到老师的命令,我们从左到右考虑,对于当前的人,如果它没有观察者,那么肯定要让它听到老师 ...