首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
一、源代码-面向CLR的编译器-托管模块-(元数据&IL代码)
】的更多相关文章
一、源代码-面向CLR的编译器-托管模块-(元数据&IL代码)
本文脉络图如下: 1.CLR(Common Language Runtime)公共语言运行时简介 (1).公共语言运行时是一种可由多种编程语言一起使用的"运行时". (2).CLR的核心功能可由面向CLR的所有语言使用,例如:"运行时"使用异常来报告错误,因此面向CLR的所有语言都使用异常来报告错误.另外,CLR允许创建线程,所以所有面向CLR的编程语言都允许创建线程. (3).运行时,CLR并不关心程序使用的是哪种语言,只要该语言是面向CLR的就行. 2.面向CL…
四、CLR执行程序集中代码和IL代码简介
三.加载公共语言运行时中介绍了在安装了.Net Framework中加载公共语言运行时,公共语言运行时加载程序集的过程.以及通过vs stdio设置源码编译的目标平台的过程. 本问主要介绍公共语言加载完程序集之后,执行程序集中的代码的过程. 一.IL中间语言 1.IL简介 一.源代码-面向CLR的编译器-托管模块-(元数据&IL代码)中介绍了C#源代码通过C#编译器生成的最终产物是托管模块,而托管模块是由IL中间语言和元数据组成,IL语言是比大多数机器语言都要高级的语言,IL有以下功能: (1)…
【CLR via C#】CSC将源代码编译成托管模块
下图展示了编译源代码文件的过程.如图所示,可用支持 CLR 的任何一种语言创建源代码文件.然后,用一个对应的编译器检查语法和分析源代码.无论选用哪一个编译器,结果都是一个托管模块(managedmodule).托管模块是一个标准的 32 位 Microsoft Windows 可移植执行体(PE32)文件 6 ,或者是一个标准的 64 位Windows 可移植执行体(PE32+)文件,它们都需要 CLR 才能执行.顺便说一句,托管的程序集总是利用了 Windows 的数据执行保护(Data Ex…
[CLR via C#]1.2 将托管模块合并成程序集
原文:[CLR via C#]1.2 将托管模块合并成程序集 1.CLR是不和托管模块一起工作的,CLR是和程序集一起工作的. 2. 程序集是一个或多个托管模块/资源文件的逻辑性分组. 3. 程序集是重用.安全性以及版本控制的最小单位. 4. 程序集取决于你对编译器的选择,可以生产单文件程序集,也可以生产多文件程序集.在CLR中,程序集相当于一个"组件". 5.将托管模块合并成程序集图示: 生成的 程序集会包含一个名为"清单"(maniest)的数据块.…
【C#进阶系列】02 PE文件,程序集,托管模块,元数据——还是那个Hello world
好了,还是这张图,还是一样的Hello world. 因为本章其实很多都是讲一些命令行编译啊什么鬼的配置类的东西,要用的时候直接百度或者回头查书就可以了, 所以了解一下也就行了,也没有记录下来,接下来讲得只是我认为很有用的东西. 关于引用 请看上图,MyTest程序集下面有个引用,引用里面大家都知道有很多dll,而我们的源代码中只有那5个using引用某dll里的具体的命名空间. (引用这些dll只会对编译器造成一点影响,并不会影响最终生成的文件,更不会去影响最终的性能) 也就是说,无论你引用多…
CLR Via第一 章 知识点整理(3)CLR执行程序集的IL代码
在了解CLR运行之前让我们先简单了解一下IL 除了编译器编译的IL代码,IL也是一种汇编语言,也就是说我们可以直接编写IL代码,当然也有对应的IL编译器,值得一提的是对于面向CLR的其他语言,CLR只开放了一部分功能,而IL可以访问CLR的全部功能. 前面一章我们介绍了CLR的所有初始工作,最后在调用Main入口方法的时候,CLR需要将程序集中的IL代码转为CPU指令,也就是CLR中JIT(just-in-time)编译器的职责,CLR会即时编译IL代码 即时编译:在运行的时候才会进行编译(类似…
.Net Framework 之 托管模块与程序集的关系
一.基本概念: --托管模块:一个标准的32的可移植执行体(PE32)文件或一个标准的64位可移植执行体(PE32+)文件.由用支持CLR的任何一种语言创建的源代码文件,再经过相应的编译器检查语法和分析源代码,编译生成.如下: --程序集:由一或者多个模块/资源文件的逻辑性组合.程序集是重用.安全性以及版本控制的最小单元. 可以将.exe与.dll文件认为是一个程序集:其中.exe文件是一个自己执行的程序集,而.dll将被其他程序集加载后运行. 二.模块与程序集概念的类比 …
【C#基础概念】程序集与托管模块的概念
本文是为了学习程序集而整理的网上资料,主要包括两个部分,概念和使用,前部分讲怎样理解程序集,后部分讲述怎样使用的细节. 程序集与托管模块的概念 "程序集与托管代码块"(摘自Himage的blog),希望大家看了此篇文章后对程序集的概念清楚一点 如果你正在开发面向DotNet平台的应用程序,那么你肯定对"程序集"和"托管模块"这两个概念不陌生,这是DotNet带来的术语.这两个概念很容易混淆,有人认为它们指的是同一样事物,其实不然.这里,我…
程序集的内部结构(托管模块、元素局、IL代码的分布情况)
程序集的内部结构 在看程序集的结构之前,我们先来看托管模块的结构. 托管模块由四部分组成:PE32头.CLR头.元数据(Metadata).IL代码.其中PE32头是用来决定托管模块运行的系统环境(32位.64位)的,CLR头饰用来描述CLR版本等信息的,这两者不是我们的重点,我们主要来讨论元数据,和IL代码.元数据其实是一些用来描述程序集.托管模块.类型.类型的成员之间的关系的表(tables),我们可以将这些表分为三类 定义表.引用表.Manifest,我们通常所受的托管模块是不包含Mani…
Cocos2d-x源代码解析(1)——地图模块(3)
接上一章<Cocos2d-x源代码解析(1)--地图模块(2)> 通过前面两章的分析,我们能够知道cocos将tmx的信息结构化到 CCTMXMapInfo.CCTMXTilesetInfo,CCTMXLayerInfo之中. 当中CCTMXMapInfo存储地图的信息包扩下面几块信息: - Map orientation (hexagonal, isometric or orthogonal) - Tile size - Map size - Layers (an array of TMXL…