浅谈.NETCLR的基础知识

今天笔者温故了.NET CLR的相关知识,顺便拿出来和大家分享一下,笔者所讲的.NET CLR很基础,希望能给你带来帮助。

站在用户的角度思考问题,与客户深入沟通,找到嘉峪关网站设计与嘉峪关网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册网站空间、企业邮箱。业务覆盖嘉峪关地区。

大家都知道.NET是支持所谓的多语言的,但其实.NET只有一种语言,就是MSIL,其它所有的语言,按照今天培训课上讲的,就是MSIL的一种子语言。MSIL看起来类似一种汇编语言,想当初,用MSIL做一个虚拟机,做的是云里来,雾里去的,对汇编还是怕的很。

在很多时候,MSIL都被当成一种基于栈的OO形式的汇编语言。而这种语言被.NET CLR所编译,转换成本地执行文件。在这里要注明的是,MSIL并不像其它的汇编语言,它所包含汇编指令不是应用于一台真正的机器上,而一种抽象的机器上,也因为此,基于MSIL的程序可以应用于不同的机器上,这也是MSIL的特点之一。

而在一台机器上,MSIL代码是不能被直接编译的,而是必须首先经过JIT转换成本地代码(native code)。

那么MSIL究竟能做什么呢?呵呵,即然做为.NET CLR的“唯一”的一种语言,凡是你在其它语言里能做到的,就是MSIL所做的。那在编译一个.NET CLR文件中,MSIL具体在何时何地扮演何种角色呢?(很想画个图,可是不知道怎么在CNBlog中实现,好像以前直接从word里可以直接copy,现在不行了) 大概描述一下编译的流程,大家应该就能明白了。

按照传统的编译流程,是将source code 编译成object code,再将object与一个library连接起来编译成binary文件,然后执行binary文件。而随后推出了Dynamic link Compilation, 即动态编译,其指的是将source code编译成一个object code,但是其在编译时不连接libary文件,而是在运行binary文件时,动态连接library 文件。

那可能有人就问,library文件是什么?它其实包含的就是metadata,元数据。而在.NET CLR中采用的是所谓的JIT Compilation, (Just In Time Compilation),它的实现原理与动态编译类似,将source code转换成MSIL,再利用JIT将MSIL转换成本地代码,在运行时,读取Assembly中的元数据进行相关操作。

大概的.NET CLR流程就是这样了,不多说了,这个要说下去,就该谈谈metadata, 还有一些编译过程的细节,比如说JIT Engine, BackPatch, JMI Thunk等一系列的编译机制。

分享文章:浅谈.NETCLR的基础知识
URL链接:http://www.36103.cn/qtweb/news11/13711.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联