CLR:由多种不同编程语言使用的运行库

托管模块:中间语言和元数据

非托管语言:C/C++,不过此为特殊,可以写成托管代码

托管语言:C#


托管模块

1,PE32/PE32+头:PE32运行在win32位系统中,win32+运行在64位系统

2,CLR头,包括CLR版本,方法入口main,元数据标记,元数据,资源,名称

3,IL代码:CLR将IL编译成本地cpu指令


图:


总结:在net的CLR(公共语言运行库)中包括托管语言(C#)和非托管语言(例如C++),两者到底什么区别.下面以数组为例

C#初始化数组不必考虑内存分配问题,如果你用反汇编工具可以看到IL代码,会自动分配内存大小

C++则与此不同,你需要事前分配合适大小再去处理

其次,CLR到底干嘛的?比如异常处理程序,你可以用C/c++/VB/C#/F#等不同语言编程,但是最终都要通过相应的编译器编译成IL(中间语言),然后调用底层异常处理程序。其为公用的一类程序仓库。整个源代码编译成托管模块的过程是,源代码(C#)在完成后,运行时经过相应的(C#)编译器编译成中间语言,生成相应托管模块(中间语言和元数据)的 整个过程

转载于:https://www.cnblogs.com/baiboy/archive/2013/03/04/2942597.html

【CLR的执行模型:将源代码编译成托管模块】相关推荐

  1. 【CLR via C#】CSC将源代码编译成托管模块

    下图展示了编译源代码文件的过程.如图所示,可用支持 CLR 的任何一种语言创建源代码文件.然后,用一个对应的编译器检查语法和分析源代码.无论选用哪一个编译器,结果都是一个托管模块(managedmod ...

  2. 《CLR via C#》笔记——CLR的执行模型

    一.将源代码编译成托管代码 1, CLR(Common Language Runtime)公共语言运行时是一个可由多种语言使用的"运行时",CLR的核心功能(比如内存管理,程序集加 ...

  3. java 源码分析_Java 源代码编译成 Class 文件的过程分析

    原标题:Java 源代码编译成 Class 文件的过程分析 在上篇文章< Java三种编译方式:前端编译 JIT编译 AOT编译 >中了解到了它们各有什么优点和缺点,以及前端编译+JIT编 ...

  4. 转:Python源代码编译成 pyc pyo

    [转] Python源代码编译成 pyc pyo 2011-02-28 17:23 [转] Python源代码编译成 pyc pyo 什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后, ...

  5. 《CLR via C# 第四版》 读书笔记(一)CLR的执行模型

    本人才疏学浅,如有错漏之处,还望指教一二. 名词解释: ①元数据(Metadata):可以简单理解为一个数据表集合,其中分为两种类型的数据,一种描述源代码的类型和成员,另一种描述源代码引用的类型和成员 ...

  6. python源码只有编译成二进制_【转】Python源代码编译成 pyc pyo

    原文地址 http://blog.csdn.net/sislcb/archive/2009/03/18/4002414.aspx什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后,生成的 ...

  7. 通过maven命令将源代码编译成jar到本地仓库

    图: 4.2.3        采用maven命令编译成jar安装到本地maven库 在路径框输入cmd,执行命令: mvn clean install 图: 图2 成功后可以看到jar包 转载于:h ...

  8. CLR via C# 笔记系列 - clr的执行模型

    1. 托管模块的组成部分 (1)PE32或 PE32+ 头.PE是Portable Executable的简称,如果使用PE32头,文件能在windows32以及64版本运行,如果是PE32+,那么只 ...

  9. [From 1.1~1.2]CLR的执行模型

    程序集(assembly): 程序集是抽象概念 程序集是一个或多个模块/资源文件的逻辑性分组.其次,程序集是重用,安全性以及版本控制的最小单元.在CLR的世界中,程序集相当于"组件" ...

最新文章

  1. JavaScript MVC框架和语言总结[infoq]
  2. oracle修改删除数据,[Oracle 错误修改删除数据后的恢复方法
  3. 实验干货分享:用Go语言实现分布式缓存开发之map
  4. WritePrivateProfileString等读写.ini配置文件
  5. Kaggle新赛:自动检测赛场上的头盔撞击事件
  6. Ceres配置(vs2013+Win10)
  7. 以太坊虚拟机 EVM(1)EVMC interpreter
  8. 日志平台查询异常,没有打印异常信息
  9. c语言 10个小程序,分享10个基础C语言的小程序
  10. java正则表达式 and_Java正则表达式详解
  11. 谷歌chromeos_如何安装Chrome OS系统
  12. 常用的oracle数据库备份方式
  13. springboot用jar方式调试,用war方式部署到tomcat
  14. db2 windows linux,Migrate DB2 v9 on windows to DB2 v10.5 on linux
  15. EF An error occurred while updating the entries. See the inner exception for details.
  16. git commit 规范及 changelog
  17. ubuntu petalinux 2018 安装操作说明
  18. Linux S_ISVTX 黏着位的作用
  19. 景观格局指数计算方法及代表的生态学意义(待补充)
  20. BigDecimal类 setScale()方法java.lang.ArithmeticException: Rounding necessary

热门文章

  1. python分隔符的使用,在python中使用分隔符“\”拆分字符串
  2. java 是怎么在中删除下拉列表_删除在一个下拉列表字段中选择的选项,并且不显示在该行中存在的其他下拉列表中不工作-jquery...
  3. centos php ioncube_Linux/Centos 安装PHP ioncube扩展
  4. kafka 异步发送阻塞_Kafka学习一
  5. 计算机二级无法完成初始化,2012年计算机等级考试二级C语言常见问题:声明和初始化...
  6. mysql zerofill 性能_比较详细的MySQL字段类型说明
  7. 读后感与机翻《人类因果学习的分解:自下而上的联想学习和自上而下的图式推理》
  8. string 基本用法
  9. android单线字体,Android自定义字体
  10. 如何查看OpenCV自带函数的源代码