仓酷云

标题: ASP.NET编程:[你必需晓得的.NET]第十三回:从Hello, world入手下手熟悉IL仓酷云 [打印本页]

作者: 兰色精灵    时间: 2015-1-18 11:25
标题: ASP.NET编程:[你必需晓得的.NET]第十三回:从Hello, world入手下手熟悉IL仓酷云
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。系列文章目次索引:《你必需晓得的.NET
本文将先容以下内容:


<br>

1.弁言
1988年BrianW.Kernighan和DennisM.Ritchie合著了软件史上的典范巨著《TheCprogrammingLanguage》,我保举一切的程序人都无机会重温这本汗青上的典范之作。从当时起,Hello,world示例就作为了几近一切理论型程序计划书本的开篇代码,一向持续至今,除表达对伟人与汗青的尊敬,本文也以Hello,world示例作为我们扣开IL言语的出发点,入手下手我们循规蹈矩的IL熟悉之旅。
2.从Hello,world入手下手
起首,固然是展现我们的Hello,world代码,入手下手一段无益的分享。
usingSystem;
usingSystem.Data;

publicclassHelloWorld
{
publicstaticvoidMain()
{
Console.WriteLine("Hello,world.");
}
}这段代码实行了最复杂的历程,向生疏的天下打了一个召唤,那末运转在初级言语面前原形又是甚么呢,上面入手下手我们基于上述示例的IL代码剖析。
3.IL体验中央
对编译后的可实行文件HelloWorld.exe使用ILDasm.exe反编译工具,复原HelloWorld的为文本MSIL编码,至于其事情道理我们希冀在系列的后续文章中做以交卸,我们检察其截图为:

ASP.NET编程:[你必需晓得的.NET]第十三回:从Hello, world入手下手熟悉IL仓酷云
登录/注册后可看大图

<br>由上图可知,编译后的IL布局中,包括了MANIFEST和HelloWorld类,个中MANIFEST是个附加信息列表,次要包括了程序集的一些属性,比方程序集称号、版本号、哈希算法、程序集模块等,和对内部援用程序集的援用项;而HelloWorld类则是我们上面先容的配角。
3.1MANIFEST清单剖析
翻开MANIFEST清单,我们能够看到
ASP.NET编程:[你必需晓得的.NET]第十三回:从Hello, world入手下手熟悉IL仓酷云
登录/注册后可看大图

<br>
从这段IL代码中,我们的剖析以下:

ASP.NET编程:[你必需晓得的.NET]第十三回:从Hello, world入手下手熟悉IL仓酷云
登录/注册后可看大图

<br>
3.2HelloWorld类剖析
起首是HelloWorld类,代码为:
.classpublicautoansibeforefieldinitHelloWorld
extends[mscorlib]System.Object
{
}//endofclassHelloWorld
然后是.ctor办法,代码为:
.methodpublichidebysigspecialnamertspecialname
instancevoid.ctor()cilmanaged
{
//代码巨细7(0x7)
.maxstack8
IL_0000:ldarg.0
IL_0001:callinstancevoid[mscorlib]System.Object::.ctor()
IL_0006:ret
}//endofmethodHelloWorld::.ctor
最初是Main办法,代码为:

.methodpublichidebysigstaticvoidMain()cilmanaged
{
.entrypoint
//代码巨细11(0xb)
.maxstack8
IL_0000:ldstr"Hello,world."
IL_0005:callvoid[mscorlib]System.Console::WriteLine(string)
IL_000a:ret
}//endofmethodHelloWorld::Main
接上去的一点增补:

3.3回回简便
往粗取精,我们的IL代码能够简化,上面的代码是基于下面的剖析,并去向不主要的信息,以更简便的体例来展示的HelloWorld版IL代码,具体的剖析就以正文来睁开吧。
ASP.NET编程:[你必需晓得的.NET]第十三回:从Hello, world入手下手熟悉IL仓酷云
登录/注册后可看大图

<br>
4.结论
停止本文,我们从一个点的角度和IL来了一次打仗,除懂得几个主要的指令寄义,更主要的是已走进了IL的天下。经由过程一站式的扫描HelloWorld的IL编码,我们还不敷以从全局来懂得IL,不外第一次的亲热打仗最少让我们太生疏,并且跟着系列文章的深切我们将渐渐创建起这类认知,从而进步我们把握懂得.NET底层的无效工具。本系列也将在后续的文章中,渐渐创建起这类利用工具的办法,敬请存眷。

<br>

参考文献
(USA)JoeDuffy,Professional.NETFramework2.0
(USA)DavidChappell,Understanding.NET
CLR团队通告
CLR基本研讨团队建立了,本团队以研讨和寻找CLR基本和.NETFramework底层常识为主旨,在此强烈热闹的接待博客园的伴侣们。假如对CLR及.NET底层研讨有乐趣,请请求到场CLR基本研讨团队,在一个专注的情况里共享你的手艺。在请求之前请您浏览团队大纲,CLR团队信息以下:
团队地点:http://clr.cnblogs.com/
团队大纲:检察
团队请求:进进
团队近期举动:收拾搜集团队成员CLR系列文章,在团队通告展播。


作者: 因胸联盟    时间: 2015-1-21 05:38
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
作者: 深爱那片海    时间: 2015-1-25 23:07
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
作者: 莫相离    时间: 2015-2-4 08:46
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
作者: 柔情似水    时间: 2015-2-7 03:55
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
作者: 精灵巫婆    时间: 2015-2-8 07:58
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
作者: 只想知道    时间: 2015-2-10 11:14
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
作者: 变相怪杰    时间: 2015-3-1 09:37
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
作者: 爱飞    时间: 2015-3-9 23:02
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
作者: 飘灵儿    时间: 2015-3-17 02:11
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
作者: 灵魂腐蚀    时间: 2015-3-23 16:17
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2