zoukankan      html  css  js  c++  java
  • CLR的执行模型(1):将源代码编译成托管模块

    终于下决心写这个系列了。

    之前看过那本《C#图解教程》,但是被某大佬推荐了《CLR via C#》,才发现自己对真正的力量一无所知。

    不过也正因为无知,所以才下决心开始在博客上记录这些吧。

    (一)CLR简介

    CRL,全名Common Language Runtime,公共语言运行库,是一个多个编程语言使用的“运行时”。CLR的核心功能,比如内存管理、程序集加载、安全性、异常处理、线程同步,可由面向CLR的所有语言使用。

    支持CLR的任何语言都可以创建源代码文件,然后用对应的编译器检查语法,分析代码。无论是什么编译器,最后都是托管模块。托管模块是标准的32位的可移植执行体(PE32)文件,或者是64位的(PE32+),都需要CLR才能运行。

                       将源代码编译成托管模块

     

    (二)托管模块的组成部分

    PE32或者PE32+头:使用PE32头,文件能在32和64位机器上运行。PE32+只能在64位机器上运行。

            

     

    CLR头:包含使这个模块成为托管模块的信息。

    IL中间语言代码:编译器编译源码的时候生成的代码。运行时,CLR将IL编译成本机CPU指令。

    元数据:面向CLR的每个编译器要在每个托管模块中生成完整的元数据。元数据是一个数据表的集合。一些数据描述了模块中定义了什么,另一些描述了模块中引用了什么。由于编译器同时生成元数据和代码,把他们绑在一起,并嵌入最终生成的托管模块。所以元数据和他描述的代码不会失去同步。

    C#,VB,F#和IL汇编器总是生成包含托管代码IL和托管数据(可GC的数据类型)的模块。为了执行包含托管代码以及托管数据的模块,用户必须在自己的计算机上装好CLR。

     

  • 相关阅读:
    在实践中不断总结和提升
    [转]态度的魔力 Net
    回答的智慧 Net
    [转] 【领导必读】唐僧为什么可以领导孙悟空 Net
    [转载]人生感悟:8个笑话 8味人生 Net
    人生成功的十大说话技巧 Net
    最新人生感悟语句摘选 Net
    2012注定是收获的一年,奋斗才刚刚开始
    程序员职业发展的绊脚石思想的枷锁
    AgileEAS.NET5.0界面设计器使用说明书(上)
  • 原文地址:https://www.cnblogs.com/renzhoushan/p/10353017.html
Copyright © 2011-2022 走看看