关闭

.NET从托管到本机的转换

发表于:2010-8-27 10:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:only_lonely(CSDNblog    来源:51Testing软件测试网采编

  本文简单的探讨一下.net代码是如何被运行的,以及一些有关。net类型安全的个人见解,并不保证这里所说的符合事实,实际上,很可能有许多都是错漏的,如果您有不同或更好的看法,请一定要告诉我,我将不胜感激 :)

  1 源代码

  几乎所有的编程语言的生命周期,其初始都是一个包含许多特定符号的文本文件,这些文本以人类可读的形式记录下了一些操作的逻辑,当然,不同的编程语言其可读性有很大差别

  在目前,那些可读的文本文件一定会被转换成一个机器可读并且可以执行的二进制的文件(编译),也就是我们所说的程序,当然。转换的方式可能并不是直接的

  有些语言强制要求将文本文件编译成二进制的程序,例如C,C++

  另一些则不这么做,他们直接读入文本,然后执行它,例如 javascript

  在此有必要解释一下,在目前的技术条件下,机器只能够读懂二进制的文件,它并不能够读懂文本文件,也不知道该怎么按照文本文件描述的那样去执行,那么类似javascript的语言是如何被执行的呢?很简单,有一个二进制的程序(由C/C++或者其他什么语言编译而成的)来解释它,用二进制的程序,读入文本文件,然后产生相应的动作,这样是可行的,就像下面的代码展示的一样

static int main(string[] args)
{
if(args[0] == "关机")
{
//执行关机的代码
}
}

  现在情况有些变化 .net 讲上述讲述的过程加了一步,这里以C#为例

  c#源文件(文本字符串,人类可读的,机器不可执行) -> IL程序集(二进制文件,人类不可读,目前机器不可执行) -> 本机代码(二进制,人类不可读,机器可执行)。

  为什么要加上一个产生IL程序集的过程? 原因有很多,其中的一个是可以使得.net平台提供跨语言特性,因为.net平台能够理解,并支持的只有IL程序集,只要编程语言能够讲自己编译成IL程序集,它就能够被.net平台理解并运行

  能够编译成IL程序集的语言有很多,C#,VB.NET,Ruby,等等... ..

21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • qpeter
    2010-8-27 14:40:59

    不予评价...

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号