【CLR的执行模型:将源代码编译成托管模块】
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的执行模型:将源代码编译成托管模块】相关推荐
- 【CLR via C#】CSC将源代码编译成托管模块
下图展示了编译源代码文件的过程.如图所示,可用支持 CLR 的任何一种语言创建源代码文件.然后,用一个对应的编译器检查语法和分析源代码.无论选用哪一个编译器,结果都是一个托管模块(managedmod ...
- 《CLR via C#》笔记——CLR的执行模型
一.将源代码编译成托管代码 1, CLR(Common Language Runtime)公共语言运行时是一个可由多种语言使用的"运行时",CLR的核心功能(比如内存管理,程序集加 ...
- java 源码分析_Java 源代码编译成 Class 文件的过程分析
原标题:Java 源代码编译成 Class 文件的过程分析 在上篇文章< Java三种编译方式:前端编译 JIT编译 AOT编译 >中了解到了它们各有什么优点和缺点,以及前端编译+JIT编 ...
- 转:Python源代码编译成 pyc pyo
[转] Python源代码编译成 pyc pyo 2011-02-28 17:23 [转] Python源代码编译成 pyc pyo 什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后, ...
- 《CLR via C# 第四版》 读书笔记(一)CLR的执行模型
本人才疏学浅,如有错漏之处,还望指教一二. 名词解释: ①元数据(Metadata):可以简单理解为一个数据表集合,其中分为两种类型的数据,一种描述源代码的类型和成员,另一种描述源代码引用的类型和成员 ...
- python源码只有编译成二进制_【转】Python源代码编译成 pyc pyo
原文地址 http://blog.csdn.net/sislcb/archive/2009/03/18/4002414.aspx什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后,生成的 ...
- 通过maven命令将源代码编译成jar到本地仓库
图: 4.2.3 采用maven命令编译成jar安装到本地maven库 在路径框输入cmd,执行命令: mvn clean install 图: 图2 成功后可以看到jar包 转载于:h ...
- CLR via C# 笔记系列 - clr的执行模型
1. 托管模块的组成部分 (1)PE32或 PE32+ 头.PE是Portable Executable的简称,如果使用PE32头,文件能在windows32以及64版本运行,如果是PE32+,那么只 ...
- [From 1.1~1.2]CLR的执行模型
程序集(assembly): 程序集是抽象概念 程序集是一个或多个模块/资源文件的逻辑性分组.其次,程序集是重用,安全性以及版本控制的最小单元.在CLR的世界中,程序集相当于"组件" ...
最新文章
- JavaScript MVC框架和语言总结[infoq]
- oracle修改删除数据,[Oracle 错误修改删除数据后的恢复方法
- 实验干货分享:用Go语言实现分布式缓存开发之map
- WritePrivateProfileString等读写.ini配置文件
- Kaggle新赛:自动检测赛场上的头盔撞击事件
- Ceres配置(vs2013+Win10)
- 以太坊虚拟机 EVM(1)EVMC interpreter
- 日志平台查询异常,没有打印异常信息
- c语言 10个小程序,分享10个基础C语言的小程序
- java正则表达式 and_Java正则表达式详解
- 谷歌chromeos_如何安装Chrome OS系统
- 常用的oracle数据库备份方式
- springboot用jar方式调试,用war方式部署到tomcat
- db2 windows linux,Migrate DB2 v9 on windows to DB2 v10.5 on linux
- EF An error occurred while updating the entries. See the inner exception for details.
- git commit 规范及 changelog
- ubuntu petalinux 2018 安装操作说明
- Linux S_ISVTX 黏着位的作用
- 景观格局指数计算方法及代表的生态学意义(待补充)
- BigDecimal类 setScale()方法java.lang.ArithmeticException: Rounding necessary
热门文章
- python分隔符的使用,在python中使用分隔符“\”拆分字符串
- java 是怎么在中删除下拉列表_删除在一个下拉列表字段中选择的选项,并且不显示在该行中存在的其他下拉列表中不工作-jquery...
- centos php ioncube_Linux/Centos 安装PHP ioncube扩展
- kafka 异步发送阻塞_Kafka学习一
- 计算机二级无法完成初始化,2012年计算机等级考试二级C语言常见问题:声明和初始化...
- mysql zerofill 性能_比较详细的MySQL字段类型说明
- 读后感与机翻《人类因果学习的分解:自下而上的联想学习和自上而下的图式推理》
- string 基本用法
- android单线字体,Android自定义字体
- 如何查看OpenCV自带函数的源代码