• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

易于反编译的中间语言

发布: 2007-6-21 21:57 | 作者: 刘彦清  | 来源: yesky  | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网

   
  无论是用VB、C#或其他的.NET编程语言编写的软件都会被编译成一种"中间语言"(IL),只有在软件运行时,一个运行时编译器(JITter)才将IL代码编译成机器语言,这在理论上就意味着创建非Windows平台的.NET运行库是可能的,但目前关于这一点还没有任何的官方说法。

IL的一个不足之处是:它可以非常容易在VB5中进行反编译,使得许多开发人员都怀疑.NET架构的安全性。

  在IL一级对代码有影响的CLR的变化能使所有的使用CLR的开发人员受益。对特定语言的优化主要与如何将这种语言编译为IL的质量有关,因此从技术上说,在不同的.NET语言之间还是有着细微的差别。尽管如此,总体情况还是很好的,比如,VB与C#具有相同水平的调试和分析工具,因为它们使用的就是同一个工具。

  CLR提供了空前的跨语言集成能力,其中包括跨语言的代码继承。所有的使用CLR的语言都共享一个相同的类型系统,这就使得利用多种编程语言开发软件变得更为简单。

  在CLR中运行的代码被称作管理代码,它使用的内存是完全由CLR控制的。管理代码带来的好处是显而易见的,包括跨语言的集成性、跨语言的异常处理和组件交互的单一模型。Visual Basic只能使用管理代码,而C#则还可以不使用管理代码(不使用运行库),使用指针管理等功能,这是VB与C#的一个不同之处,这一点的重要性取决于你需要完成的任务。

  The architectural differences imposed by the CLR run deeper than cross-language inheritance, shared features, and managed code. For one, 由CLR带来的结构上的差异性远不止跨语言的继承、共享的特性和管理代码。Visual Studio.NET的基础架构不是COM,包括字符串在内的VB.NET中的所有元素都是对象。基于这些原因和其他的一些原因,微软改变了基础架构处理对象的方式,每当引用一个对象时,COM都把对象引用计数器加1。如果释放了一个对象则计数器减1,当计数器减为0后这个对象也结束了。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网