博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#在.NET编译执行过程
阅读量:6690 次
发布时间:2019-06-25

本文共 488 字,大约阅读时间需要 1 分钟。

1..NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。

 

  • 程序集要么是可执行的,要么是DLL
  • 程序集里的代码并不是本机代码,而是一种名称为CIL的中间语言
  • 程序集包含如下信息:
    • 程序的CIL
    • 程序中使用的类型的元数据
    • 对其他程序集引用的元数据

2.   程序的编译过程

   程序的CIL直到它被调用运行时才会被编译成本机代码。在运行时,CLR执行下面步骤:

    • 检查程序集的安全特性
    • 在内存中分配空间
    • 把程序集中的可执行代码发送给实时编译器(JIT),把其中的一部分编译成本机代码。

程序集中的可执行代码只在需要的时候由JIT编译器进行编译,然后它就被缓存起来以备在后来的程序中执行。这就意味着不被调用的代码不会被编译成本机代码,而且被调用的代码只被执行一次。

一旦CIL被编译成本机代码,CLR就在它运行时管理它,执行像内存释放、数组边界检查、检查参数类型、异常管理等任务。有两个重要的术语由此而生。

    • 托管代码:为.NET框架编写的代码称为托管代码,需要CLR
    • 非托管代码:不在CLR控制下运行的代码,比如Win32 C/C++ DLL,称为非托管代码

3.编译和执行过程图

转载地址:http://rmkoo.baihongyu.com/

你可能感兴趣的文章
最近一直很纠结,发现人真的不能认真。
查看>>
java中的枚举类 enum使用与分析
查看>>
JAVA 四大域对象总结
查看>>
GIT 常用命令
查看>>
企业级落地容器与DevOps,选用K8S都有哪些“姿势”
查看>>
JOIN关联表中ON,WHERE后面跟条件的区别
查看>>
Genesis-3D新手入门——8.天空盒
查看>>
char ch[3]中的ch在哪
查看>>
Android平台播放语音时支持听筒、喇叭之间切换
查看>>
RPC的实现
查看>>
不一样的Office 365之 —— 使用StaffHub管理你的排班
查看>>
从Mysql EXPLAIN探寻数据库查询优化2
查看>>
让元素居中
查看>>
php memcache保存session的一个设置误区
查看>>
鱼眼镜头
查看>>
闪光灯
查看>>
Scalatra
查看>>
CentOS 7 三者分离编译安装LAMP
查看>>
Linux内核调整,支持4000-8000并发
查看>>
jquery mobile 设置设备适配
查看>>