1. 非托管C/C++可以对系统进行低级控制,可以完全按照自己的想法管理内存,必要时能方便地创建线程。另一方面,使用Microsoft Visual Basic 6.0可以快速生成UI应用程序,并方便的控股之COM对象和数据库。
2. 公共语言运行时(Common Language Runtime,CLR)是一个可以由多种编程语言使用的 ”运行时“。
CLR核心功能:(比如内存管理、程序集加载、安全性、异常处理和线程同步)可以由面向CLR的所有语言使用。
CLR不关心开发语言,只关心编译器是否是面向CLR的。
3. Microsoft 创建了好几个面向”运行时“的语言编译器。
4. 源代码 ——>托管模块
利用面向CLR的任何语言创建源代码文件,然后用对应的编译器检查语法和分析源代码。无论选择哪一个编译器,其结果都是”托管模块(managed module)“。
托管模块是标准的32/64位window可移植执行体(PE32)文件,需要在CLR下才可以运行。
托管模块组成部分:
a. PE32或PE32+头:标准Window PE文件头。如果这个头文件使用PE32格式,文件可以在32位或者64位系统上运行,如果这个文件头使用PE32+格式,则只能在64位系统上运行。该头标识了文件类型,包括GUI、CUI、DLL,并包含一个时间标记指出文件的生成时间。
b. CLR头:
c. 元数据:每个托管数据块都包含源数据表。主要由两种表,一种表描述源代码中定义的类型和成员。另一种描述源代码引用的类型和成员。
d. IL(中间语言)代码:编译器编译源代码产生的代码,在运行时,CLR将IL编译成本机CPU指令。
原文:https://www.cnblogs.com/luoshengjie/p/10595062.html