[CLR via C#]1.1 将源代码编译成托管代码

原文:[CLR via C#]1.1 将源代码编译成托管代码

1. 公共语言运行时(Common Language Runtime,CLR)是一种可由多种编程语言使用的"运行时"。

2. CLR的核心功能(比如内存管理,程序集加载、安全性、异常处理和线程同步等)可由面向CLR的所有语言使用。

3. 用一个对应的编译器编译源代码之后,结果都是一个托管模块

4. 托管模块是一个标准的32/64位Microsoft Windows 可移植执行体(PE32/PE32+)文件,它们都需要CLR才能执行。

 

5. 托管的程序集利用Windows的数据执行保护地址空间布局随机化增强整个系统的安全性。

 

6. 托管模块的各个组成部分

 

7. 本地代码编译器生成的是面向特定CPU架构(比如x86、x64和IA64)的代码。

 

8. 每个面向CLR的编译器生成的都是IL(中间语言)代码。IL有时称为托管代码,因为CLR要管理它的执行。除了生成IL,面向CLR的每个编译器还要在每个托管模块中生成完整的元数据。

 

9.  元数据是一组数据表。其中一些数据表描述了模块中定义的内容,比如类型及其成员。还有一些元数据表描述了托管模块引用的内容,比如导入的类型及其成员。元数据总是与包含IL代码的文件关联。事实上,元数据总是嵌入和IL代码相同的EXE/DLL文件中,两者密不可分。

 

10.  元数据的用途

  •     编译时,元数据消除了对本地C/C++头和库文件的需求,因为在负责实现类型/成员的IL代码文件中,已包含和引用的类型/成员有关的全部信息。编译器可直接从托管代码中读取元数据。
  •     Visual Studio 使用元数据帮你写代码。它的"智能感知"技术可以解析元数据。
  •     CLR的代码验证过程使用元数据确保代码执行“类型安全”的操作。

    ......

 

时间: 2024-11-08 22:08:05

[CLR via C#]1.1 将源代码编译成托管代码的相关文章

linux下apache+mysql+php开发环境纯源代码编译搭建

apache|mysql|编译|源代码 记录一下我在fedora core 1下通过源代码编译出来的apache+mysql+php开发环境的全部过程 通常安装一台服务器当然使用rpm是最方便的,不需要考虑太多配置的问题,就可以轻松获得需要的环境了.不过rpm包互相关联的问题也不是这么容易解决. apache,mysql,php这三个应用从源代码编译安装还是比较简单的,配置参数不算复杂,而且没有太多的依赖关系,从源码编译出来的系统也比较稳定一些,方便未来打补丁和升级工作. 编译安装的前提是,系统

CentOS 6.4+nginx-1.4.4+php-5.5.8(php-fpm)+mysql-5.6.15+xcache-3.1.0+memcache-2.2.7源代码编译安装指南

风信网(ithov.com)原创文章:本文将向大家讲解关于CentOS 6.4 X64位系统源代码编译安装nginx-1.4.4+php-5.5.8(php-fpm)+mysql-5.6.15+xcache-3.1.0+memcache-2.2.7的详细过程,希望能帮助大家解决生产环境中的环境配置问题. 安装需要支持的库文件 [root@localhost mysql-5.6.15]# yum install pcre [root@localhost mysql-5.6.15]# yum ins

题二 源代码编译:拓扑排序

一.题目 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在网易游戏的日常工作中,C++ 是一门常用的语言.面对众多的 C++ 代码,等待源文件编译的漫长时间是个令人糟心的时刻,一直以来大家对此怨声载道.终于有一天,大家找到了你,一位优秀的程序员,请你来帮忙分析一下编译速度的瓶颈. 经过一番调查和研究,你发现一些源代码之间是有依赖关系的.例如,某个源文件 a.cpp 编译链接生成了动态链接库 a.dll,而 b.cpp 编译链接生成的 b.dll 依赖于 a.dll

从源代码编译 Vim 8.0

从源代码编译 Vim 实际上并不那么困难.下面是你所要做的: 1.首先,安装包括 Git 在内的所有必备的库.对于一个 Debian 类的 Linux 发行版,例如 Ubuntu,命令如下: sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \ libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \ libcairo2-dev libx11-dev libxpm-dev lib

《深入分析GCC 》——3.3 GCC源代码编译

3.3 GCC源代码编译 在获得了GCC的源代码后,为了生成目标机器上的编译器程序,需要对源代码进行编译,一般步骤包括: (1)使用conf?igure脚本完成编译配置,生成Makef?ile文件. (2)使用make工具编译源代码. (3)使用make工具安装生成的编译程序等. 使用的典型脚本为: ./configure make make install 3.3.1 配置 这个过程一般很简单,可以直接在${GCC_SOURCE}目录下使用命令./conf?igure.该脚本会对GCC源代码编

c++-网上下载的duilib源代码编译报错,新手求问如何检查。

问题描述 网上下载的duilib源代码编译报错,新手求问如何检查. 下载的是SVN364.先说下错误吧,报错如下: >C:Program Files (x86)Windows Kits8.1Includeumdispex.h(791): error C2011: "ICanHandleException":"struct"类型重定义 1> f:duilibduilib-svn364-20121126svn364duilibUtils/flash11.tl

《OpenStack实战指南》—— 2.2 在Ubuntu上使用源代码编译安装

2.2 在Ubuntu上使用源代码编译安装 对于各个版本的Linux来说,都会制作OpenStack相应的软件包.虽然在2.1节中介绍了二进制包安装,但是在这里笔者还是会讲一下源代码安装OpenStack基本组件的过程,因为从学习的角度来说,通过源代码安装OpenStack各个组件的过程,可以使读者对OpenStack的框架和各个组件的作用有一个比使用二进制安装更全面的了解.另一个好处是,二进制包的发布会滞后于源代码,如果想在第一时间尝试一些最新的功能或修复Bug后的版本,源代码安装是个不错的选

自己动手写操作系统源代码编译,链接错误,求解。

问题描述 自己动手写操作系统源代码编译,链接错误,求解. 自己动手写操作系统源码(D:Tinixchapter5h),编译结果如下: $ MAKE ld -s -Ttext 0x30400 -o kernel.bin kernel/start.o lib/string.o lib/klib.o kernel/kernel.o kernel/start.o:start.c:(.text+0xe): undefined reference to disp_str' kernel/start.o:st

《深入理解Android:Telephony原理剖析与最佳实践》一第2章 搭建Android源代码编译环境

第2章 搭建Android源代码编译环境 第1章介绍了Android以及其Telephony功能模块的基本结构,在本章中将带着读者去搭建Android编译环境.即使你已经能够在自己计算机上成功编译Android源代码了,也希望你能阅读本章内容,因为本章不乏一些技巧的总结和Android相关实用工具使用方法的介绍. Android的编译环境作为深入学习Android的基础,不可缺失,能够成功下载Android源代码并编译成功,对深入学习Android是非常关键和重要的一步:Android环境搭建比