CLR Via 第一 章 知识点整理(1)
写这个纯粹是自己的一点学习总结,其实就学习的笔记整理,相当于对自己的一点督促,如有看到不正确的欢迎指出
一般我们写代码都是使用的高级语言,但是在CLR中运行的代码并不是我们直接写的代码,而是通过我们选择对应语言的编辑器生产的中间语言运行,所以一开始会介绍,在CLR运行之前,到底做了什么?
所有面向CLR的语言都可以在CLR中运行并编译,例如C#、F#,在代码在CLR运行之前,则先会选择对应的编译器进行编译,并生产中间语言(IL),所以实际运行的是中间语言,之所以CLR能实现多种语言兼容也是因为如此。 注:C++很特殊,可以同时编写托管代码和非托管代码
托管模块: 在进行对应的语言编译之后,对生成一个叫托管模块的一个文件,说白了就是电脑上的一个特殊的文件而已,但是因为有了CLR头,所以能被CLR识别到,IL则是托管模块重要的组成元素之一,程序集大致由四个部分组成:
1、PE头:windows文件的标准
2、CLR头:标记为可以CLR识别的托管文件
3、元数据:对于代码中定义类和引用类的描述
4、IL(中间语言):用于CLR中运行的重要代码

其中元数据是其中重要部分组成,为CLR性能以及编写时都有帮助:
1、避免重复编译
2、编写代码时的只能感应
3、类型安全的检查
4、序列化传输
5、GC的帮助
程序集: 介绍完托管模块后就必须要介绍一下大家比较熟悉的程序集了,程序集是由一个或多个托管模块和若干个资源文件组成,但是多出了一个新的文件:清单,清单则是对于托管模块和资源的一个描述的文件,如果一个程序集只有一个托管模块则他就是托管模块本身。
至此,在介绍CLR运行代码前重要的几个文件就介绍完毕了,在探究CLR要低如何运行代码之前,下一节我们先看一下CLR是如何启动的。
CLR Via 第一 章 知识点整理(1)的更多相关文章
- CLR Via第一 章 知识点整理(4) FCL、CTS、CLI和CLS
FCL(Framework Class Library) Framework 类库: FCL是 .net Framework 包含的一组DLL程序集的统称,FCL包含了提供了很多功能,关于这一部分没有 ...
- CLR Via第一 章 知识点整理(3)CLR执行程序集的IL代码
在了解CLR运行之前让我们先简单了解一下IL 除了编译器编译的IL代码,IL也是一种汇编语言,也就是说我们可以直接编写IL代码,当然也有对应的IL编译器,值得一提的是对于面向CLR的其他语言,CLR只 ...
- CLR Via 第一 章 知识点整理(2)程序集和CLR的启动
这一节先简单的讨论一下程序集以及CLR的初始化 虽然对应的编译器会生成托管模块,但实际上CLR不与托管模块工作,编译器除了编译还有将生成的托管模块转换为程序集的功能,微软还提供了工具AL.exe(程序 ...
- 《零压力学Python》 之 第一章知识点归纳
第一章(初识Python)知识点归纳 Python是从ABC语言衍生而来的 ABC语言是Guido参与设计的一种教学语言,为非专业编程人员所开发的. Python是荷兰程序员 Guido Van Ro ...
- Java入门第一章知识点总结
-d是directory 目录的意思 cls:清楚doc里面的内容 ipconfig:显示网络配置信息 java -version:检查安装的jdk版本信息 是类型自动向上转换. 在输出时,根据当前 ...
- Artech的MVC4框架学习——第一章初步认识ASP.NET MVC
前言: Artech觉得掌握ASP.NET MVC具有三个层次. 第一层了解基本的编程模式,掌握Controller和View的定义方式,知道路由如何注册以及验证规则如何定义. 第二个层次要求我们对A ...
- 第一章 CLR 的执行模型
CLR via C# 读书笔记:第一章 CLR 的执行模型(1) 第Ⅰ部分CLR基础.这部分为三章(第一章:CLR的只想能够模型,第二章:生成.打包.部署和管理应用程序及类型,第三章:共享程序集和强命 ...
- CISA 信息系统审计知识点 [第一章. 信息系统审计过程 ]
对有志成为审计师或者IT管理者de朋友, 第一章. 信息系统审计过程 1. IS 审计和保障标准.指南.工具.职业道德规范 信息技术保证框架(ITAF,Information Technology A ...
- 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述
微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...
随机推荐
- Confluence 6 MySQL 创建数据库和数据库用户
一旦你成功的安装和配置了 MySQL 数据库服务器,你需要为你的 Confluence 创建数据库和数据库用户: 在 MySQL 中以超级用户运行 'mysql' .默认的用户为 'root' 同时密 ...
- 【Windows】添加定时任务不执行
[问题]windows定时任务不执行.在“所有程序->附件->系统工具->任务计划程序”中添加了定时调用“D:\sys_task\bugmanager\run.bat”脚本的任务计划 ...
- PHP 抽象类、接口,traint详解
PHP底层实现(http://blog.jobbole.com/94475/) 一,抽象类:abstract abstract class HeHe{ public $age=18;//可以定义属性 ...
- 关于在CentOS上,绘图丢失部分中文字的问题
官方的system.drawing.common 第三方的 zkweb.system.drawing,都用的是libgdiplus 只要是自己编译libgdiplus,都会有这个问题, 问题 : 这里 ...
- <a>之间怎么放值</a> 挺简单的,第一次遇到···
需求描述:对列表中的某一列内容添加a标签(其实就是对td标签下添加a标签了). 思路简介:拿到这个我首先的反应就是在td标签对text获取内容的代码中动态拼接<a></a>字符 ...
- eclipse检出SVN项目的正确步骤
一.在工作空间新建工作目录:workspace-xf 二.在工作目录下workspace-xf 新建文件夹 tdvs ,进入该文件夹鼠标右键:SVN CheckOut 检出需要的项目 三.打开ecl ...
- 20165206 2017-2018-2《Java程序设计》课程总结
20165206 2017-2018-2<Java程序设计>课程总结 一.每周作业链接汇总 预备作业1:对师生关系的看法和期望 预备作业2:c语言基础和学习技能的理解 预备作业3:Linu ...
- python网络爬虫day1
python爬虫真的很方便,自己不能忽视的问题就是字符编码的问题,一直想腾出时间来看,一直没有时间.明天开始看吧. 今天是学习python爬虫的第一天,从B站上搜到的,可惜可惜. import req ...
- C# float与UInt16互转
//float拆分成两个UInt16 public static UInt16 FloatToTwoUInt16(float f) { byte[] bs = BitConvert.GetBytes( ...
- ElasticSearch简要总览
今天看了一下ElasticSearch的相关文档,我做了如下总结: 发现越来越喜欢画图归纳总结知识了,看图说话 集群特性说明 健康状况的说明 如何配置分片? 接下来一张图总结下操作相关的总结 接下来, ...