<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_小墨的童鞋</title><subtitle type="text">书要用时方恨少...</subtitle><id>http://feed.cnblogs.com/blog/u/15139/rss</id><updated>2012-02-05T16:48:29Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/15139/rss"/><entry><id>http://www.cnblogs.com/wormday/archive/2012/02/06/2339443.html</id><title type="text">软考经过收获和感想</title><summary type="text">经过虽然干了10年程序员，每每想到自己不是软件科班出身，多少就有点遗憾。去年工作不忙，半离职状态，所以心血来潮报了《全国计算机技术与软件专业技术资格（水平）考试》的《软件设计师》原因有两个：1.据说软件设计师高校通过率貌似也不高，如果我通过了，是不是就算重修了一下大学的基础科目呢？2.干了这么多年无证程序员，也确实有点不甘心..咱又不是没能力，干嘛不弄个证呢？就用这种自我安慰的心态，一路报考、复习。大学毕业10年了，这个算第一次考试吧，所以自己也有点压力，家里有了宝宝，不是学习的好环境，因此我成了图书馆的常客。另外一方面，考这个还有点觉得有点抬不起来头，因为我潜意识里这个是在校生考的东西，我儿</summary><published>2012-02-05T16:23:00Z</published><updated>2012-02-05T16:23:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2012/02/06/2339443.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2012/02/06/2339443.html"/><content type="html">&lt;p&gt;&lt;strong&gt;经过&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;虽然干了10年程序员，每每想到自己不是软件科班出身，多少就有点遗憾。&lt;/p&gt;&#xD;
&lt;p&gt;去年工作不忙，半离职状态，所以心血来潮报了《全国计算机技术与软件专业技术资格（水平）考试》的《软件设计师》&lt;/p&gt;&#xD;
&lt;p&gt;原因有两个：&lt;/p&gt;&#xD;
&lt;p&gt;1.据说软件设计师高校通过率貌似也不高，如果我通过了，是不是就算重修了一下大学的基础科目呢？&lt;/p&gt;&#xD;
&lt;p&gt;2.干了这么多年无证程序员，也确实有点不甘心..咱又不是没能力，干嘛不弄个证呢？&lt;/p&gt;&#xD;
&lt;p&gt;就用这种自我安慰的心态，一路报考、复习。&lt;/p&gt;&#xD;
&lt;p&gt;大学毕业10年了，这个算第一次考试吧，所以自己也有点压力，家里有了宝宝，不是学习的好环境，因此我成了图书馆的常客。&lt;/p&gt;&#xD;
&lt;p&gt;另外一方面，考这个还有点觉得有点抬不起来头，因为我潜意识里这个是在校生考的东西，我儿子都两岁了，还跟一群小朋友考试&amp;hellip;&amp;hellip;总有点尴尬..&lt;/p&gt;&#xD;
&lt;p&gt;以至于考试当天回家的路上碰到一个老同事，也是考这个，我都没好意思说我也是考软考的，呵呵。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;收获&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;至于收获肯定是有的，并且还不少，起码逼迫自己读了一些书：《&lt;a href="http://www.cnblogs.com/cj723/archive/2011/02/06/1949498.html" target="_blank"&gt;大话数据结构&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10063749.html" target="_blank"&gt;计算机科学概论&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10360906.html" target="_blank"&gt;&lt;span style="color: #000000;"&gt;深入理解计算机系统&lt;/span&gt;&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10058776.html" target="_blank"&gt;编译原理&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10079261.html"&gt;大话设计模式&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10042368.html" target="_blank"&gt;深入浅出设计模式&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10839552.html" target="_blank"&gt;大话处理器&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10132740.html" target="_blank"&gt;计算机硬件及组成原理&lt;/a&gt;》、《&lt;a href="http://book.360buy.com/10067200.html"&gt;程序员的自我修养-链接、装载与库&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;这些都是一些相当经典的书，遗憾的是大部分书都没有读完，只是重点章节看了一下&lt;/p&gt;&#xD;
&lt;p&gt;收获最大的是程杰的《大话数据结构》，认认真真看了一遍，原来没有接触过，什么树、图、队列之类的基础知识，这次算是系统学了一遍。&lt;/p&gt;&#xD;
&lt;p&gt;至于那个《软件设计师教程》，我觉得既学不到东西，也通不过考试。所以只是买了，并没有看。&lt;/p&gt;&#xD;
&lt;p&gt;意外的是我两岁的儿子也有收获&lt;/p&gt;&#xD;
&lt;p&gt;1.他也很喜欢《大话数据结构》这本书，总在书皮上找&amp;ldquo;乌龟&amp;rdquo;，&amp;ldquo;爸爸和宝宝&amp;rdquo;，还认识了&amp;ldquo;大&amp;rdquo;、&amp;ldquo;话&amp;rdquo;、&amp;ldquo;设计模式&amp;rdquo;等几个汉字，没想到汉字启蒙教育从这本书上开始的。&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011041314432068.gif" alt="" width="49" height="50" /&gt;&lt;br /&gt;2.他把书皮撕掉了，据为己有，也许是太喜欢了吧...&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011041314354152.gif" alt="" width="48" height="48" /&gt;，奇怪的是这本书还真有两个书皮，难道真的有这个作用？百思不得其解，请&lt;a href="http://www.cnblogs.com/cj723/" target="_blank"&gt;&lt;strong&gt;程杰&lt;/strong&gt;&lt;/a&gt;老师解释一下。。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;感想&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1.这个证书没屁用&lt;/p&gt;&#xD;
&lt;p&gt;2.考试的内容让人无语，有些题目简单的简直就是直接告诉你答案，还有些题目Google Baidu也找不到答案的来源。&lt;/p&gt;&#xD;
&lt;p&gt;3.如果想拿证一定要做历年试题，我就是下午的历年试题没有看，有几个题目干脆就看不明白想让你干啥。。。差点挂了。&lt;/p&gt;&#xD;
&lt;p&gt;4.如果是想学东西，就把里边的知识点都展开了学习一遍，肯定很有收获。虽然平时也学习，但大都是马上能变现的东西，有点急功近利了。这些毕竟是基础，基础不牢，其他知识学起来费劲效果也不好。&lt;/p&gt;&#xD;
&lt;p&gt;5.付出了总会有回报，我一直信奉这句话。当然目前为止回报还基本没有收到，呵呵。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;打算&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;月底打算报系统分析师，但是估计时间安排不开了，因为上半年我要学的东西很多（是那些容易变现的知识，没办法，生活也是第一要务）。&lt;/p&gt;&#xD;
&lt;p&gt;先报名再说吧，能看多少看多少了...&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2339443.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2012/02/06/2339443.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2012/01/18/2325718.html</id><title type="text">改了一下分辨率，Areo特效奇迹般的恢复了...</title><summary type="text">Win7本子用了一年多，Areo从来就打不开，也搞不清楚为啥开始几天网上也查过原因，也没有结果今天做Web项目，想测试一下1024分辨率显示效果，无意间Areo竟然打开了。就这么简单 一年多都没发现看来我已经一年多没好好做过UI了...</summary><published>2012-01-18T08:24:00Z</published><updated>2012-01-18T08:24:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2012/01/18/2325718.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2012/01/18/2325718.html"/><content type="html">&lt;p&gt;Book 用了一年多，Areo特效从来就打不开，也搞不清楚为啥&lt;/p&gt;&#xD;
&lt;p&gt;开始几天网上也查过原因，也没有结果&lt;/p&gt;&#xD;
&lt;p&gt;今天做Web项目，想测试一下1024分辨率显示效果，无意间Areo竟然打开了。&lt;/p&gt;&#xD;
&lt;p&gt;就这么简单 一年多都没发现&lt;/p&gt;&#xD;
&lt;p&gt;看来我已经一年多没好好做过UI了...&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2325718.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2012/01/18/2325718.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2012/01/15/2315473.html</id><title type="text">MSIL学习笔记(03):第一个IL代码的分析</title><summary type="text">对ILdasm反编译的IL文件进行简要的分析..</summary><published>2012-01-14T20:28:00Z</published><updated>2012-01-14T20:28:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2012/01/15/2315473.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2012/01/15/2315473.html"/><content type="html">&lt;p&gt;前情回顾&lt;/p&gt;&#xD;
&lt;p&gt;《&lt;a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_1"  href="http://www.cnblogs.com/wormday/archive/2012/01/06/2315093.html"&gt;MSIL学习笔记(01):ilasm和ildasm&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;《&lt;a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_0"  href="http://www.cnblogs.com/wormday/archive/2012/01/07/2315462.html"&gt;MSIL学习笔记(02):简化ildasm生成的代码&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;两篇笔记记录了使用使用Ildasm反编译了一个简单的程序，并且在保证程序可以正常编译执行的情况下，清理了一些不太重要的内容。&lt;/p&gt;&#xD;
&lt;hr /&gt;&#xD;
&lt;p&gt;为了方便阅读，还是把C#源文件和对应的IL代码先贴出来&lt;/p&gt;&#xD;
&lt;p&gt;C#源文件&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; ILSample&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;反编译的IL代码（简化版）&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;.assembly&lt;/span&gt; ILSample&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;.class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;auto&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ansi&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;beforefieldinit&lt;/span&gt; ILSample.Program&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt; [mscorlib]System.Object&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; static &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args) &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;  {&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.entrypoint&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       11 (0xb)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt;  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0000:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldstr&lt;/span&gt;      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0005:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;)&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_000a:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt;&lt;br /&gt;  } &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;specialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;rtspecialname&lt;/span&gt; &lt;br /&gt;          &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  .ctor() &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;  {&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       7 (0x7)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt;  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0000:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldarg.0&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0001:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Object::.ctor()&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0006:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;作为一个.NET程序员，根据以往对IL的接触，里边的&amp;ldquo;ldstr\call\ret\ldarg&amp;rdquo;基本可以猜出来个123，反倒是一堆关键字修饰符看不明白&lt;/p&gt;&#xD;
&lt;p&gt;所以先问自己几个问题，然后再找出来答案&lt;/p&gt;&#xD;
&lt;p&gt;问题1：那个必不可少的&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;.assembly&lt;/span&gt; ILSample{}起什么作用？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题2：.class中 auto 关键字什么意思？&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;问题3：.class中 ansi 关键字什么意思？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题4：.class中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;beforefieldinit&amp;nbsp;&lt;/span&gt;关键字什么意思？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题5：.method中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;.entrypoint&amp;nbsp;&lt;/span&gt;关键字什么意思？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题6：.method中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;hidebysig&amp;nbsp;&lt;/span&gt;关键字什么意思？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题7：.method中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;specialname&lt;/span&gt;&lt;span data-mce-=""&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;关键字什么意思？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题8：.method中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;rtspecialname&amp;nbsp;&lt;/span&gt;&lt;/span&gt;关键字什么意思？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题9：每个指令前边的&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;IL_00XX: 是神马东西&lt;/span&gt;？&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;问题10：&lt;/span&gt;&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;.maxstack&lt;/span&gt;  &lt;span data-mce-=""&gt;8&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span data-mce-=""&gt;表示什么&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;-------------------------&lt;/p&gt;&#xD;
&lt;p&gt;关于上面问题的答案 只是可能的答案&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;问题1：那个必不可少的&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;.assembly&lt;/span&gt;&amp;nbsp;ILSample{}起什么作用？&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;这么简单一个语句，我的直觉是声明这个文件包含程序集清单。理由1是.NET程序集可以包含在多个文件中，必定有一个文件（我随便起个名字叫程序集的主文件）保存有程序集的信息，比如名称、描述、版本&amp;hellip;&amp;hellip;最最起码，这个文件应该表述一下"我就是这个程序集的主文件"。.assembly XXX{} 起的应该就是这个作用。理由2是当初删除了&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;.assembly&lt;/span&gt;&amp;nbsp;ILSample{}之后，是&lt;a href="http://www.cnblogs.com/wormday/archive/2012/01/07/2315462.html" target="_blank"&gt;可以正常编译的，但是无法正常执行&lt;/a&gt;，提示的错误如下&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/11583/2012010700493782.png" alt="" width="639" height="51" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;既然可以编译，就说明允许这样存在（以），不能执行是缺少程序集清单。&lt;/p&gt;&#xD;
&lt;p&gt;为了验证我的想法 根据《&lt;a title="如何：生成多文件程序集" href="http://msdn.microsoft.com/zh-cn/library/226t7yxe(v=VS.90).aspx" target="_blank"&gt;如何：生成多文件程序集&lt;/a&gt;》自己做了一个多文件程序集，在主文件中存在的.assembly XXX{},在附属文件中的确是不存在的。&lt;/p&gt;&#xD;
&lt;p&gt;围绕这个问题的新发现是.file .moXXXXXXX&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;问题2：.class中 auto 关键字什么意思？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;《&lt;/span&gt;&lt;a id="ctl02_TitleUrl"  href="http://www.cnblogs.com/JessieDong/archive/2009/07/21/1527553.html"&gt;StructLayout特性&lt;/a&gt;》《&lt;a id="ctl02_TitleUrl"  href="http://www.cnblogs.com/happyhippy/archive/2007/04/12/710927.html"&gt;.net托管环境下struct实例字段的内存布局(Layout)和大小(Size)&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;问题3：.class中 ansi 关键字什么意思？&lt;br /&gt;&lt;span data-mce-=""&gt;问题4：.class中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;beforefieldinit&amp;nbsp;&lt;/span&gt;关键字什么意思？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个关键字表示让运行时决定什么时候调用静态构造函数，也可能在调用函数的开始处，也可能恰恰在第一次访问静态成员或者第一次实例化之前。&lt;/p&gt;&#xD;
&lt;p&gt;总之是运行时决定的，只要在你用到这个类之前搞定就好了&lt;/p&gt;&#xD;
&lt;p&gt;如果没有这个关键字，则运行时恰恰在第一次访问静态成员或者第一次实例化之前调用静态构造函数。&lt;/p&gt;&#xD;
&lt;p&gt;至于C#编译的IL什么情况下有这个关键字什么时候没有关键字,判断起来也很容易，如果有显式的静态构造函数，就没有这个关键字，如果没有显式的构造函数，就有这个关键字。比如下面两个类：&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Test1&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; Test1()&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;有显式的构造函数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;             i = &lt;span style="color: #800080;"&gt;3&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Test2&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;没有显式的构造函数&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = &lt;span style="color: #800080;"&gt;3&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt;     }&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;生成的IL&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;.class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;auto&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ansi&lt;/span&gt; Test1&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt; [mscorlib]System.Object&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;specialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;rtspecialname&lt;/span&gt; static &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; .cctor() &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt; &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0000:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ldc.i4.3&lt;/span&gt; &lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0001:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;stsfld&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int32&lt;/span&gt; _&lt;span style="color: #800080;"&gt;108&lt;/span&gt;.IL.Test1::i&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0006:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt; &lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;specialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;rtspecialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; .ctor() &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt; &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0000:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ldarg.0&lt;/span&gt; &lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0001:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Object::.ctor()&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0006:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt; &lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.field&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; static &lt;span style="color: #0000ff;"&gt;int32&lt;/span&gt; i&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;auto&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ansi&lt;/span&gt; &lt;span style="color: #000000; background-color: #ffff00;"&gt;&lt;strong&gt;beforefieldinit&lt;/strong&gt;&lt;/span&gt; Test2&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt; [mscorlib]System.Object&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;specialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;rtspecialname&lt;/span&gt; static &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; .cctor() &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt; &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0000:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ldc.i4.3&lt;/span&gt; &lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0001:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;stsfld&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;int32&lt;/span&gt; _&lt;span style="color: #800080;"&gt;108&lt;/span&gt;.IL.Test2::i&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0006:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt; &lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;specialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;rtspecialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; .ctor() &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt; &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0000:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ldarg.0&lt;/span&gt; &lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0001:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Object::.ctor()&lt;br /&gt;        &lt;span style="color: #ff00ff;"&gt;L_0006:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt; &lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.field&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; static &lt;span style="color: #0000ff;"&gt;int32&lt;/span&gt; i&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;关于&lt;span data-mce-=""&gt;beforefieldinit还有很多有意思的内容，可以参考下面这些园子里高手的文章&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;《&lt;/span&gt;&lt;a id="ctl04_TitleUrl"  href="http://www.cnblogs.com/artech/archive/2008/11/01/1324280.html"&gt;关于Type Initializer和 BeforeFieldInit的问题，看看大家能否给出正确的解释&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;《&lt;a id="ctl02_TitleUrl"  href="http://www.cnblogs.com/anytao/archive/2008/11/02/must_net_23.html"&gt;[你必须知道的.NET]第二十三回：品味细节，深入.NET的类型构造器&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;《&lt;a id="ctl02_TitleUrl"  href="http://www.cnblogs.com/foundation/archive/2008/11/06/1327927.html"&gt;对beforefieldinit的理解&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;《&lt;a id="ctl02_TitleUrl"  href="http://www.cnblogs.com/happyhippy/archive/2007/04/04/710936.html"&gt;静态构造函数的执行时机&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;问题5：.method中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;.entrypoint&amp;nbsp;&lt;/span&gt;关键字什么意思？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span data-mce-=""&gt;.entrypoint这个比较简单，就是程序的入口点，如果是.EXE的程序集有且只能有一个，如果是.DLL的程序集，当然可以没有入口点。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span data-mce-=""&gt;C#的Main()函数，就被编译器加上了&lt;span data-mce-=""&gt;.entrypoint,IL编译器是不认Main()的，只认.entrypoint，所以在IL中，你可以随便让一个函数&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;当作入口。没必要非是Main()。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;span data-mce-=""&gt;问题6：.method中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;hidebysig&amp;nbsp;&lt;/span&gt;关键字什么意思？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;基本相当于C#中的new关键字&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;问题7、&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;问题8：&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;：.method中&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;specialname&lt;/span&gt;&lt;span data-mce-=""&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;rtspecialname&amp;nbsp;&lt;/span&gt;&lt;/span&gt;关键字什么意思？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;目前也没搞很清楚，大概就是表示这个方法比较特殊&lt;/p&gt;&#xD;
&lt;p&gt;大概构造函数之类的需要加上这两个修饰&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;问题9：每个指令前边的&amp;nbsp;&lt;/span&gt;&lt;span data-mce-=""&gt;IL_00XX: 是神马东西&lt;/span&gt;？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;IL_XXXX:其实就是语句的标号，这里的这些标号是ILDASM生成的，就程序执行来说并没有意义。&lt;/p&gt;&#xD;
&lt;p&gt;我们也可以根据自己的情况来写标号，比如"BEGIN: END:"等等&lt;/p&gt;&#xD;
&lt;p&gt;也可以通过标号让程序来跳转，C#不也是有这个功能的么？&lt;/p&gt;&#xD;
&lt;p&gt;接下来的问题就是IL_XXXX后便XXXX这几个数字了，是按什么编号的？其实很明显感觉是相对于方法入口的地址偏移。&lt;/p&gt;&#xD;
&lt;p&gt;为了证实这一点，我也没想到什么好办法，随便写了一个C#程序，反编译后为&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #ff00ff;"&gt;IL_0000:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldstr&lt;/span&gt;      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;dddddddddddddddd&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;72 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0005:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;) &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;28 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_000a:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldstr&lt;/span&gt;      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ffffffffffffffff&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;72 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_000f:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;) &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;28 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0014:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldstr&lt;/span&gt;      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;dddddddddddddddd&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt; &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;72 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0019:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;) &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;28 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_001e:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldc.i4.3&lt;/span&gt;  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;19 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_001f:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;stloc.0&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;0A &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0020:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldc.i4.4&lt;/span&gt;  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;1A &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0021:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;stloc.1&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;0B &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0022:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldloc.0&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;06 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0023:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldloc.1&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;07 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0024:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;add&lt;/span&gt;       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;58 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0025:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;stloc.2&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;0C   &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0026:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldloc.2&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;08 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_0027:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;int32&lt;/span&gt;) &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;28 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #ff00ff;"&gt;IL_002c:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt;       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;2A &lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;用UltraEdit打开了.EXE文件。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/11583/2012011502482586.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;找到这段IL代码表示二进制代码(OpCode)，查找的方法当然要找到每条指令对应的OpCode，&lt;/p&gt;&#xD;
&lt;p&gt;比如0x72代表ldstr；0x28代表call；0x19代表ldc.i4.3 &amp;nbsp;更多需要参考《&lt;a id="ctl02_TitleUrl"  href="http://www.cnblogs.com/wormday/articles/2322702.html"&gt;MSIL指令\操作\Opcode对照表&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;按照内存的顺序将列下来，就很容易看出来代码地址偏移的关系。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/11583/2012011502473978.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span data-mce-=""&gt;问题10：&lt;/span&gt;&lt;span data-mce-=""&gt;&lt;span data-mce-=""&gt;.maxstack&lt;/span&gt;&amp;nbsp;&lt;span data-mce-=""&gt;8&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span data-mce-=""&gt;表示什么&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;最后一个问题 留到下篇吧。。。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2315473.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2012/01/15/2315473.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2012/01/07/2315462.html</id><title type="text">MSIL学习笔记(02):简化ildasm生成的代码</title><summary type="text">ildasm生成的代码是在太多了，为了能有心情继续学下去，不得不把它简化一下</summary><published>2012-01-06T17:32:00Z</published><updated>2012-01-06T17:32:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2012/01/07/2315462.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2012/01/07/2315462.html"/><content type="html">&lt;p&gt;书接上回《&lt;a id="ctl02_TitleUrl"  href="http://www.cnblogs.com/wormday/archive/2012/01/06/2315093.html"&gt;MSIL学习笔记(01):ilasm和ildasm&lt;/a&gt;》&lt;/p&gt;&#xD;
&lt;p&gt;上次用C#写了一个超简单的程序，然后编译成EXE,然后用ildasm反编译成IL代码。&lt;/p&gt;&#xD;
&lt;p&gt;这个工作估计很多人做过，也估计很多人看了那么一大坨乱码，就没心思继续搞下去了。&lt;/p&gt;&#xD;
&lt;p&gt;那一大坨恶心的东西不能简化一下么？&lt;/p&gt;&#xD;
&lt;p&gt;为了举例子，还是要再恶心一次，我把那坨代码复制出来&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.1&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Copyright (c) Microsoft Corporation.  All rights reserved.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Metadata version: v4.0.30319&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;.assembly &lt;span style="color: #0000ff;"&gt;extern&lt;/span&gt; mscorlib&lt;br /&gt;{&lt;br /&gt;  .publickeytoken = (B7 7A 5C &lt;span style="color: #800080;"&gt;56&lt;/span&gt; &lt;span style="color: #800080;"&gt;19&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; E0 &lt;span style="color: #800080;"&gt;89&lt;/span&gt; )                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; .z\V.4..&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  .ver &lt;span style="color: #800080;"&gt;4&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;.assembly ILSample&lt;br /&gt;{&lt;br /&gt;  .custom instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;) = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;29&lt;/span&gt; 2E 4E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ..).NETFramework&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        2C &lt;span style="color: #800080;"&gt;56&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6F 6E 3D &lt;span style="color: #800080;"&gt;76&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; 2E &lt;span style="color: #800080;"&gt;30&lt;/span&gt; 2C &lt;span style="color: #800080;"&gt;50&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ,Version=v4.0,Pr&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        6F &lt;span style="color: #800080;"&gt;66&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 3D &lt;span style="color: #800080;"&gt;43&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 6E &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; 0E   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ofile=Client..T.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;14&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B &lt;span style="color: #800080;"&gt;44&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;61&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; .FrameworkDispla&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;79&lt;/span&gt; 4E &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 1F 2E 4E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; yName..NET Frame&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;43&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 6E &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;50&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; work 4 Client Pr&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        6F &lt;span style="color: #800080;"&gt;66&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;65&lt;/span&gt; )                                  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ofile&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; --- The following custom attribute is added automatically, do not uncomment -------&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;  .custom instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;08&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; ) &lt;br /&gt;  .custom instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;02&lt;/span&gt; &lt;span style="color: #800080;"&gt;16&lt;/span&gt; &lt;span style="color: #800080;"&gt;57&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; 4E 6F 6E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;78&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ....T..WrapNonEx&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                             &lt;span style="color: #800080;"&gt;63&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6F 6E &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;68&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;77&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; )       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ceptionThrows.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  .hash algorithm &lt;span style="color: #800080;"&gt;0x00008004&lt;/span&gt;&lt;br /&gt;  .ver &lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;.module ILSample.exe&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; MVID: {948EB03C-30F9-4319-96A0-A883E05AED19}&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;.imagebase &lt;span style="color: #800080;"&gt;0x00400000&lt;/span&gt;&lt;br /&gt;.file alignment &lt;span style="color: #800080;"&gt;0x00000200&lt;/span&gt;&lt;br /&gt;.stackreserve &lt;span style="color: #800080;"&gt;0x00100000&lt;/span&gt;&lt;br /&gt;.subsystem &lt;span style="color: #800080;"&gt;0x0003&lt;/span&gt;       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; WINDOWS_CUI&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;.corflags &lt;span style="color: #800080;"&gt;0x00000003&lt;/span&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  ILONLY 32BITREQUIRED&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Image base: 0x00730000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; =============== CLASS MEMBERS DECLARATION ===================&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;.&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; auto ansi beforefieldinit ILSample.Program&lt;br /&gt;       extends [mscorlib]System.Object&lt;br /&gt;{&lt;br /&gt;  .method &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; hidebysig &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args) cil managed&lt;br /&gt;  {&lt;br /&gt;    .entrypoint&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       11 (0xb)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    .maxstack  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    IL_0000:  ldstr      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;    IL_0005:  call       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;)&lt;br /&gt;    IL_000a:  ret&lt;br /&gt;  } &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; end of method Program::Main&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;  .method &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; hidebysig specialname rtspecialname &lt;br /&gt;          instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  .ctor() cil managed&lt;br /&gt;  {&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       7 (0x7)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    .maxstack  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    IL_0000:  ldarg.&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;    IL_0001:  call       instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Object::.ctor()&lt;br /&gt;    IL_0006:  ret&lt;br /&gt;  } &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; end of method Program::.ctor&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;} &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; end of class ILSample.Program&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; =============================================================&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; *********** DISASSEMBLY COMPLETE ***********************&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; WARNING: Created Win32 resource file ilsample.res&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;最好判断的是注释，一样就看出来了，跟C#的注释一样么。当然注释可以根据喜好选择性的删除一部分。&lt;/p&gt;&#xD;
&lt;p&gt;再然后看看那些代码是我自己写的，自己写的部分肯定是可以清除的，&lt;/p&gt;&#xD;
&lt;p&gt;其实很容易看出来，就是下面这一部分。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;.&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; auto ansi beforefieldinit ILSample.Program&lt;br /&gt;       extends [mscorlib]System.Object&lt;br /&gt;{&lt;br /&gt;  .method &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; hidebysig &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args) cil managed&lt;br /&gt;  {&lt;br /&gt;    .entrypoint&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       11 (0xb)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    .maxstack  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    IL_0000:  ldstr      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;    IL_0005:  call       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;)&lt;br /&gt;    IL_000a:  ret&lt;br /&gt;  } &lt;br /&gt;&lt;br /&gt;  .method &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; hidebysig specialname rtspecialname &lt;br /&gt;          instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  .ctor() cil managed&lt;br /&gt;  {&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       7 (0x7)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    .maxstack  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    IL_0000:  ldarg.&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;    IL_0001:  call       instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Object::.ctor()&lt;br /&gt;    IL_0006:  ret&lt;br /&gt;  } &lt;br /&gt;&lt;br /&gt;} &lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;跟C#一样，这段代码很相似的方式构造了类(ILSample.Program)和方法(Main())以及一个构造函数(.ctor())&lt;/p&gt;&#xD;
&lt;p&gt;除了这些从C#中直译过来的代码，其他的就删除试试看了。&lt;/p&gt;&#xD;
&lt;p&gt;1.最看不顺眼的就是下面这一段，删除试试看。&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;.assembly ILSample&lt;br /&gt;{&lt;br /&gt;  .custom instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;) = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;29&lt;/span&gt; 2E 4E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ..).NETFramework&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        2C &lt;span style="color: #800080;"&gt;56&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6F 6E 3D &lt;span style="color: #800080;"&gt;76&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; 2E &lt;span style="color: #800080;"&gt;30&lt;/span&gt; 2C &lt;span style="color: #800080;"&gt;50&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ,Version=v4.0,Pr&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        6F &lt;span style="color: #800080;"&gt;66&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 3D &lt;span style="color: #800080;"&gt;43&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 6E &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; 0E   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ofile=Client..T.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;14&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B &lt;span style="color: #800080;"&gt;44&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;61&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; .FrameworkDispla&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;79&lt;/span&gt; 4E &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 1F 2E 4E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; yName..NET Frame&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;43&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 6E &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;50&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; work 4 Client Pr&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        6F &lt;span style="color: #800080;"&gt;66&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;65&lt;/span&gt; )                                  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ofile&lt;br /&gt;&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; --- The following custom attribute is added automatically, do not uncomment -------&lt;br /&gt;  &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;  .custom instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;08&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; ) &lt;br /&gt;  .custom instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;02&lt;/span&gt; &lt;span style="color: #800080;"&gt;16&lt;/span&gt; &lt;span style="color: #800080;"&gt;57&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; 4E 6F 6E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;78&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ....T..WrapNonEx&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                             &lt;span style="color: #800080;"&gt;63&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6F 6E &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;68&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;77&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; )       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ceptionThrows.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  .hash algorithm &lt;span style="color: #800080;"&gt;0x00008004&lt;/span&gt;&lt;br /&gt;  .ver &lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;删除之后，居然可以用ilasm顺利编译，但是执行的时候报错&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/11583/2012010700493782.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;看来删除多了，&lt;/p&gt;&#xD;
&lt;p&gt;经过测试，仅仅包含一个&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;.assembly ILSample&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;是可以正常执行的，所以暂时把.assembly ILSample里边的内容清空了。&lt;/p&gt;&#xD;
&lt;p&gt;2.下面这个语句好像表示引用的mscorlib程序集，也删除一下试试看&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;.assembly &lt;span style="color: #0000ff;"&gt;extern&lt;/span&gt; mscorlib&lt;br /&gt;{&lt;br /&gt;  .publickeytoken = (B7 7A 5C &lt;span style="color: #800080;"&gt;56&lt;/span&gt; &lt;span style="color: #800080;"&gt;19&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; E0 &lt;span style="color: #800080;"&gt;89&lt;/span&gt; )                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; .z\V.4..&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  .ver &lt;span style="color: #800080;"&gt;4&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;结果正常编译执行&lt;/p&gt;&#xD;
&lt;p&gt;3.一不做，二不休，下面的代码也删除&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;.module ILSample.exe&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; MVID: {948EB03C-30F9-4319-96A0-A883E05AED19}&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;.imagebase &lt;span style="color: #800080;"&gt;0x00400000&lt;/span&gt;&lt;br /&gt;.file alignment &lt;span style="color: #800080;"&gt;0x00000200&lt;/span&gt;&lt;br /&gt;.stackreserve &lt;span style="color: #800080;"&gt;0x00100000&lt;/span&gt;&lt;br /&gt;.subsystem &lt;span style="color: #800080;"&gt;0x0003&lt;/span&gt;       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; WINDOWS_CUI&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;.corflags &lt;span style="color: #800080;"&gt;0x00000003&lt;/span&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  ILONLY 32BITREQUIRED&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Image base: 0x00730000&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;结果正常编译执行&lt;/p&gt;&#xD;
&lt;p&gt;现在剩下来的代码清爽多了&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;.assembly ILSample&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;.&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; auto ansi beforefieldinit ILSample.Program&lt;br /&gt;       extends [mscorlib]System.Object&lt;br /&gt;{&lt;br /&gt;  .method &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; hidebysig &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args) cil managed&lt;br /&gt;  {&lt;br /&gt;    .entrypoint&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       11 (0xb)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    .maxstack  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    IL_0000:  ldstr      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;    IL_0005:  call       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;)&lt;br /&gt;    IL_000a:  ret&lt;br /&gt;  } &lt;br /&gt;  .method &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; hidebysig specialname rtspecialname &lt;br /&gt;          instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  .ctor() cil managed&lt;br /&gt;  {&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       7 (0x7)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    .maxstack  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    IL_0000:  ldarg.&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;    IL_0001:  call       instance &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Object::.ctor()&lt;br /&gt;    IL_0006:  ret&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;简化其实不是目的，可能是因为我太浮躁，看大段大段不明白的东西，信心受挫，所以简化一下，找到一个突破点&lt;/p&gt;&#xD;
&lt;p&gt;接下来的目的就是研究剩余的这段代码了...&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2315462.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2012/01/07/2315462.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2012/01/06/2315093.html</id><title type="text">MSIL学习笔记(01):ilasm和ildasm</title><summary type="text">.CS-&gt;.EXE-&gt;.il-&gt;.EXE的编译反编译过程</summary><published>2012-01-06T13:56:00Z</published><updated>2012-01-06T13:56:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2012/01/06/2315093.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2012/01/06/2315093.html"/><content type="html">&lt;p&gt;我跟每个.NET程序员一样，MSIL多少都接触过一点，个别语句也能看明白，但是没有系统学习过&lt;/p&gt;&#xD;
&lt;p&gt;更没有写过IL代码 和 编译过&lt;/p&gt;&#xD;
&lt;p&gt;IL我觉得学习方法应该跟其他语言不同，因为这个语言根本上不是用来手写的，因为IL就语言层次上相当高级，手工写又相当麻烦，C#好像也就是薄薄的包装了一层&lt;/p&gt;&#xD;
&lt;p&gt;还是写C#代码看IL来学习吧&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; ILSample&lt;br /&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Program&lt;br /&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt;     {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt;         {&lt;br /&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt;             Console.WriteLine(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt;         }&lt;br /&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt;     }&lt;br /&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; }&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;这么一段代码，编译生成&amp;nbsp;ILSample.exe&lt;/p&gt;&#xD;
&lt;p&gt;然后Microsoft Visual Studio 2008-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio Command Prompt (2010)&lt;/p&gt;&#xD;
&lt;p&gt;在黑屏里 输入 执行下面的命令&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;ildasm ILSample.exe /&lt;span style="color: #0000ff;"&gt;out&lt;/span&gt;=ILSample.il&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;ildasm是IL语言的反编译工具，就是可以把DLL和EXE文件反编译成IL代码。执行这个命令会将ILSample.exe的IL原文件保存在ILSample.il中&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;如果直接输入&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;ildasm ILSample.exe&lt;br /&gt;或者&lt;br /&gt;ildasm&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;会打开ildasm图形界面 ，比如&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/11583/2012010621260043.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;但是加上&amp;ldquo;/&lt;span data-mce-=""&gt;out&lt;/span&gt;=ILSample.il&amp;rdquo; 就直接反编译成IL代码文件，图形界面就不出来了&lt;/p&gt;&#xD;
&lt;p&gt;打开这个文件，内容如下&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.1&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  Copyright (c) Microsoft Corporation.  All rights reserved.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Metadata version: v4.0.30319&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;.assembly&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;extern&lt;/span&gt; mscorlib&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.publickeytoken&lt;/span&gt; = (B7 7A 5C &lt;span style="color: #800080;"&gt;56&lt;/span&gt; &lt;span style="color: #800080;"&gt;19&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; E0 &lt;span style="color: #800080;"&gt;89&lt;/span&gt; )                         &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; .z\V.4..&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;.ver&lt;/span&gt; &lt;span style="color: #800080;"&gt;4&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;.assembly&lt;/span&gt; ILSample&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.custom&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;) = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;29&lt;/span&gt; 2E 4E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ..).NETFramework&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        2C &lt;span style="color: #800080;"&gt;56&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6F 6E 3D &lt;span style="color: #800080;"&gt;76&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; 2E &lt;span style="color: #800080;"&gt;30&lt;/span&gt; 2C &lt;span style="color: #800080;"&gt;50&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ,Version=v4.0,Pr&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        6F &lt;span style="color: #800080;"&gt;66&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 3D &lt;span style="color: #800080;"&gt;43&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 6E &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; 0E   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ofile=Client..T.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;14&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B &lt;span style="color: #800080;"&gt;44&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;61&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; .FrameworkDispla&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;79&lt;/span&gt; 4E &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 1F 2E 4E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;46&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; 6D &lt;span style="color: #800080;"&gt;65&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; yName..NET Frame&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        &lt;span style="color: #800080;"&gt;77&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6B &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;34&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;43&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;69&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; 6E &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;20&lt;/span&gt; &lt;span style="color: #800080;"&gt;50&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; work 4 Client Pr&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                        6F &lt;span style="color: #800080;"&gt;66&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6C &lt;span style="color: #800080;"&gt;65&lt;/span&gt; )                                  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ofile&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; --- The following custom attribute is added automatically, do not uncomment -------&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 ) &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.custom&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(&lt;span style="color: #0000ff;"&gt;int32&lt;/span&gt;) = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;08&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; ) &lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.custom&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; &lt;span style="color: #800080;"&gt;00&lt;/span&gt; &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;02&lt;/span&gt; &lt;span style="color: #800080;"&gt;16&lt;/span&gt; &lt;span style="color: #800080;"&gt;57&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; &lt;span style="color: #800080;"&gt;61&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; 4E 6F 6E &lt;span style="color: #800080;"&gt;45&lt;/span&gt; &lt;span style="color: #800080;"&gt;78&lt;/span&gt;   &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ....T..WrapNonEx&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                             &lt;span style="color: #800080;"&gt;63&lt;/span&gt; &lt;span style="color: #800080;"&gt;65&lt;/span&gt; &lt;span style="color: #800080;"&gt;70&lt;/span&gt; &lt;span style="color: #800080;"&gt;74&lt;/span&gt; &lt;span style="color: #800080;"&gt;69&lt;/span&gt; 6F 6E &lt;span style="color: #800080;"&gt;54&lt;/span&gt; &lt;span style="color: #800080;"&gt;68&lt;/span&gt; &lt;span style="color: #800080;"&gt;72&lt;/span&gt; 6F &lt;span style="color: #800080;"&gt;77&lt;/span&gt; &lt;span style="color: #800080;"&gt;73&lt;/span&gt; &lt;span style="color: #800080;"&gt;01&lt;/span&gt; )       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; ceptionThrows.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;.hash&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;algorithm&lt;/span&gt; &lt;span style="color: #800080;"&gt;0x00008004&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.ver&lt;/span&gt; &lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;:&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;.module&lt;/span&gt; ILSample.exe&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; MVID: {76CE82AE-87E2-4509-B42A-AF8E007539D5}&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;.imagebase&lt;/span&gt; &lt;span style="color: #800080;"&gt;0x00400000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;.file&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;alignment&lt;/span&gt; &lt;span style="color: #800080;"&gt;0x00000200&lt;/span&gt;&lt;br /&gt;.stackreserve &lt;span style="color: #800080;"&gt;0x00100000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;.subsystem&lt;/span&gt; &lt;span style="color: #800080;"&gt;0x0003&lt;/span&gt;       &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; WINDOWS_CUI&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;.corflags&lt;/span&gt; &lt;span style="color: #800080;"&gt;0x00000003&lt;/span&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;  ILONLY 32BITREQUIRED&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Image base: 0x00390000&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; =============== CLASS MEMBERS DECLARATION ===================&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;.class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;auto&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ansi&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;beforefieldinit&lt;/span&gt; ILSample.Program&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt; [mscorlib]System.Object&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; static &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args) &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;  {&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;.entrypoint&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       11 (0xb)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt;  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0000:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldstr&lt;/span&gt;      &lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Hello&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0005:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Console::WriteLine(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;)&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_000a:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt;&lt;br /&gt;  } &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; end of method Program::Main&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color: #0000ff;"&gt;.method&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;hidebysig&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;specialname&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;rtspecialname&lt;/span&gt; &lt;br /&gt;          &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;  .ctor() &lt;span style="color: #0000ff;"&gt;cil&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;managed&lt;/span&gt;&lt;br /&gt;  {&lt;br /&gt;    &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Code size       7 (0x7)&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;.maxstack&lt;/span&gt;  &lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0000:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ldarg.0&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0001:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;call&lt;/span&gt;       &lt;span style="color: #0000ff;"&gt;instance&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; [mscorlib]System.Object::.ctor()&lt;br /&gt;    &lt;span style="color: #ff00ff;"&gt;IL_0006:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;ret&lt;/span&gt;&lt;br /&gt;  } &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; end of method Program::.ctor&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;} &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; end of class ILSample.Program&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; =============================================================&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; *********** DISASSEMBLY COMPLETE ***********************&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; WARNING: Created Win32 resource file ILSample.res&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;生成这么一大堆东西，虽然很多地方搞不清楚什么意思，能不能删除&lt;/p&gt;&#xD;
&lt;p&gt;但是起码有一部分可以看明白 比如&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;.class&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;auto&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;ansi&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;beforefieldinit&lt;/span&gt; ILSample.Program&lt;br /&gt;       &lt;span style="color: #0000ff;"&gt;extends&lt;/span&gt; [mscorlib]System.Object&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;因该是&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;翻译过来的&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;可以从IL中看出来类Program继承自 System.Object 是私有的 等等&lt;/p&gt;&#xD;
&lt;p&gt;以及IL定义的一个方法Main(&lt;span data-mce-=""&gt;string&lt;/span&gt;[] args)，.ctor()是构造函数。&lt;/p&gt;&#xD;
&lt;p&gt;具体细节以后日子还长，现在的任务是把生成的IL代码 重新编译成 .EXE文件&lt;/p&gt;&#xD;
&lt;p&gt;还是在&lt;/p&gt;&#xD;
&lt;p&gt;开始菜单-&amp;gt;Microsoft Visual Studio 2008-&amp;gt;Visual Studio Tools-&amp;gt;Visual Studio Command Prompt (2010)&lt;/p&gt;&#xD;
&lt;p&gt;在黑屏里 输入 执行下面的命令&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;ilasm ilsample.il /output=ILSample2.exe&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;会生成一个文件ILSample2.exe 执行这个文件 如果正确执行就搞定了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/11583/2012010621242080.jpg" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;今天的任务完成了&lt;/p&gt;&#xD;
&lt;p&gt;就是从C#的源代码-&amp;gt;.EXE文件-&amp;gt;反编译&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2012/11583/2012010621455243.jpg" alt="" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2315093.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2012/01/06/2315093.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2012/01/04/2311836.html</id><title type="text">此连接需要活动的Internet连接</title><summary type="text">在家用笔记本连公司的VPN或者fan墙，有时候总是发现VPN显示个小叉，点开提示“此连接需要活动的Internet连接”感觉可能跟电脑休眠什么的有点关系，但一直没有仔细研究今天发现只要把机器本身的Wifi断开重新再连接，VPN状态就恢复正常了</summary><published>2012-01-04T04:21:00Z</published><updated>2012-01-04T04:21:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2012/01/04/2311836.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2012/01/04/2311836.html"/><content type="html">&lt;p&gt;在家用笔记本连公司的VPN或者fan墙，有时候总是发现VPN显示个小叉，点开提示&amp;ldquo;此连接需要活动的Internet连接&amp;rdquo;&lt;/p&gt;&#xD;
&lt;p&gt;感觉可能跟电脑休眠什么的有点关系，但一直没有仔细研究&lt;/p&gt;&#xD;
&lt;p&gt;今天发现只要把机器本身的Wifi断开重新再连接，VPN状态就恢复正常了&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2311836.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2012/01/04/2311836.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2011/12/26/2302218.html</id><title type="text">Apple Mac OS X每日一技巧029:查询iPhone/iPad的序列号(Serial Number)和标识符(UDID/Identifier)</title><summary type="text">１.序列号比较好查，不用连电脑也可以，打开iOS设备的设置-&gt;通用-&gt;关于本机　里边就有２.通过电脑查看的话可以打开iTunes，插上iOS设备,该设备的摘要里边有序列号，点击一下这一行就变成了标识符(UDID),Apple总是有些这些变态的查看方法。这个地方没法复制，序列号还好，UDID会抄死人的。３.如果安装了XCode，可以看Windows-&gt;Organizer，这里边序列号和标识符都有，还可以复制，还有个优点是只要曾经连接过的设备这里都看的到，只要不删除就一直在里边。</summary><published>2011-12-26T08:17:00Z</published><updated>2011-12-26T08:17:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2011/12/26/2302218.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2011/12/26/2302218.html"/><content type="html">&lt;p &gt;１.序列号比较好查，不用连电脑也可以，打开iOS设备的设置-&amp;gt;通用-&amp;gt;关于本机　里边就有&lt;/p&gt;&#xD;
&lt;p &gt;&lt;span &gt;２.通过电脑查看的话可以打开iTunes，插上iOS设备,该设备的摘要里边有序列号，点击一下这一行就变成了标识符(UDID),Apple总是有些这些变态的查看方法。这个地方没法复制，序列号还好，UDID会抄死人的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011122616131663.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;span &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;span &gt;３.如果安装了XCode，可以看Windows-&amp;gt;Organizer，这里边序列号和标识符都有，还可以复制，还有个优点是只要曾经连接过的设备这里都看的到，只要不删除就一直在里边。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011122616043556.png" alt="" /&gt;&lt;/p&gt;&#xD;
&lt;p &gt;&lt;span &gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2302218.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2011/12/26/2302218.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2011/05/25/2054105.html</id><title type="text">可以通过IP地址访问共享,但通过机器名提示未知的用户名或密码错误</title><summary type="text">一早到公司SourceSafe死活连不上了，别人都好连，就我不要用测试了一下，是共享不能访问，最奇怪的是通过IP地址可以访问共享，但是通过机器名不行。 提示“未知的用户名或密码错误”。网上搜索的解决方案如下：运行 组策略编辑器 gpedit.msc -&gt;打开计算机配置-&gt;Windows设置-&gt;安全设置-&gt;本地策略-&gt;安全选项中的：网络安全：LAN管理器（XP中叫LAN Manager）身份验证级别，如果默认是“没有定义”，更改为“发送LM和NTLM响应”。</summary><published>2011-05-25T05:30:00Z</published><updated>2011-05-25T05:30:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2011/05/25/2054105.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2011/05/25/2054105.html"/><content type="html">&lt;p&gt;一早到公司SourceSafe死活连不上了，别人都好连，就我不要用&lt;/p&gt;&#xD;
&lt;p&gt;测试了一下，是共享不能访问，最奇怪的是通过IP地址可以访问共享，但是通过机器名不行。&lt;/p&gt;&#xD;
&lt;p&gt;提示&amp;ldquo;未知的用户名或密码错误&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;网上搜索的解决方案如下：&lt;/b&gt;&lt;br /&gt;运行 组策略编辑器 gpedit.msc -&amp;gt;打开计算机配置-&amp;gt;Windows设置-&amp;gt;安全设置-&amp;gt;本地策略-&amp;gt;安全选项中的：网络安全：LAN管理器（XP中叫LAN Manager）身份验证级别，如果默认是&amp;ldquo;没有定义&amp;rdquo;，更改为&amp;ldquo;发送LM和NTLM响应&amp;rdquo;。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052513182334.jpg" /&gt;&lt;/p&gt;&#xD;
&lt;img src="http://www.cnblogs.com/wormday/aggbug/2054105.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2011/05/25/2054105.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2011/05/20/2046715.html</id><title type="text">Apple Mac OS X每日一技巧028:苹果程序图标中隐藏着的各种秘密[转载]</title><summary type="text">如果你是苹果用户，那么 Mac 和 iPhone 中的图标可谓早已司空见惯，但是你知道这些图标中隐藏的秘密么?这些看过之后就被忽略的东西，却在细节之中体现了科技产品中蕴含的人性和趣味。Electricpig 最近一篇文章，列举了苹果的程序中一些内含深意的图标 。我们一起来看一看这些图标背后的故事：</summary><published>2011-05-20T01:27:00Z</published><updated>2011-05-20T01:27:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2011/05/20/2046715.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2011/05/20/2046715.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;如果你是苹果用户，那么 Mac 和 iPhone 中的图标可谓早已司空见惯，但是你知道这些图标中隐藏的秘密么?这些看过之后就被忽略的东西，却在细节之中体现了科技产品中蕴含的人性和趣味。Electricpig 最近一篇文章，列举了苹果的程序中一些内含深意的图标 。我们一起来看一看这些图标背后的故事：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;iP&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size: 16px; line-height: 24px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;hone、iPod Touch、iPad 图标&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;meta content="text/html;charset=UTF-8" http-equiv="Content-Type" /&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Maps&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;红色的大头针标注的是苹果在加州 Cupertino 的总部：Number 1 Infinite Loop。这个地址是苹果编程员的一个内部笑话，含义是永无休止的循环代码。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009144685.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;iPod Artists&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;打开 iPod 的音乐，菜单中 Artists 的标签是某位艺术家的侧身像，谁呢?Bono，U2 的主唱。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009150124.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;iBook Browser&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;打开 iBooks Store，看 Browse 图标，是不是一副眼镜?仔细看看，像乔布斯戴的那副，还是哈利波特戴的那副呢?&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Mac 图标&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009152711.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;TextEdit&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;如果你用过 iPhone ，在设置邮件的时候，会发现输入姓名的地方显示的范例名字是 John Appleseed。这个名字历史很久，是苹果图标中最早的彩蛋之一。Mac OS 中的 Text Edit 图标便是署名 John Appleseed 的一篇文稿。文稿内容是苹果 1997 到 2002 年间著名的&amp;ldquo;Think Different&amp;rdquo; 广告大战中演讲词的一部分。苹果经常用 AppleSeed 作为通讯录的占位符。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: 16px;" size="2"&gt;&lt;img height="1" width="1" border="1" src="http://upload.newhua.com/2/7b/1302146006390.gif" /&gt;&lt;/span&gt;&lt;/center&gt;&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009160140.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Dictionary/Thesaurus&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;此程序的图标是本厚厚的字典。封面下部有一行小字：Lorem Ipsum Dolor Sit Amet Etiam 。这是一段毫无意义的拉丁文，设计师和编辑们将此作为测试排版的占位文字已经多年。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: 16px;" size="2"&gt;&#xD;
&lt;meta charset="utf-8" /&gt;&#xD;
&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009153829.jpg" /&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Disk Utility&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;将图标扩展为 512&amp;times;512 像素之后，会发现上面写着一句话 &amp;ldquo;小心轻放硬盘，以免损坏电路板，确保正确接地&amp;rdquo;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009163259.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Mail&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;邮件的图标是一个邮票，而邮戳的文字是 &amp;ldquo;Hello from Cupertino,CA&amp;rdquo;。Cupertino，CA 正是苹果的总部所在地。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009164632.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;iCal&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;iCal 的图标显示的日期是 7 月 17 日。这是因为苹果发布 iCal 是在 2002 年 7 月 17 日的 MacWorld Expo 大会。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009170116.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;计算器&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;12374218.75 这个数字，多年以来人们一直在猜测它的含义，目前仍没有准确的解释。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009192467.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;iTunes 9&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;据说这个图标上有隐藏句子，是白色文字，写在浅灰色光盘之上，内容是 &amp;ldquo;Apple 2006 iTunes 7&amp;Prime;。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009194659.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Aperture&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;镜头上文字是 &amp;ldquo;Designed by Apple in California&amp;rdquo; 和 &amp;ldquo;50mm 1:1.4&amp;rdquo;，不是 L 头啊，1:1.2L 才够给力啊。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009201315.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Keynote 2008&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;一个台灯， 演讲台上放着一份 Q4 2008 报告。报告上的文字是音乐剧 Spring Awaking 中的歌词。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009203098.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Console 10.5.6&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;&amp;ldquo;WARNING: AY 7:36&amp;rdquo;。 谁知道是什么意思么?&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009205097.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Font Book&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;图标中的三个字母是 A,F,K。在网络缩略词中，意思是 Away From Keyboard(远离键盘)。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009210367.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Stickies&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;便签的图标上除了有鸡蛋和牛奶之外，还记录着 Lou 的电话号码 555-7361。在美剧和电影中，555 是经常出现的一个区号，一个专门为虚拟世界保留的区号。当然，也有可能这号码是来自安徽马鞍山的娄知县的，这事得问燕小六。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009215254.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Interface Builder&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;iPhone 和 iPad 简洁美观的界面我们都很熟悉了，但是你知道苹果的设计师们使用的是什么样的铅笔和工具来绘制这些界面吗?Interface Builder 的图标上就告诉了我们答案：画板上及上面画的带橡皮的 2 号铅笔、画笔、直尺。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: 16px;" size="2"&gt;&#xD;
&lt;meta charset="utf-8" /&gt;&#xD;
&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009213637.png" /&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Photo Booth&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;图标中的美女据说就是 Photo Booth 的开发人员，不过 Electricpig 的编辑经过一番搜索之后，也无法确认是真是假。也许可以到 Quora 上去提个问题，说不定美女会亲自来解答这个问题的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009222698.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Firmware Update Utility&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;这个图标中是一个芯片，上面还写着型号。这个芯片不光出现在固件升级图标中，还出现在 Mac System Profiler 中。芯片的型号是 810-54-2136-1 RM-NCE-1 6319-415-1239，有人知道是什么意思吗?&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009225321.png" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Windows Computer&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;使用 Mac 电脑访问网络上的 Windows 电脑是就会出现这个小 CRT 显示器的图标。这个图我们传统的 Windows 用户太熟悉了，看来苹果公司的设计师们也很了解 Windows 电脑的精髓：蓝屏。我说你们也太坏啦~&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;center&gt;&lt;span style="font-size: small;" size="3"&gt;&lt;span style="line-height: 24px;"&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011052009231017.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/center&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;"&gt;&lt;strong&gt;&lt;span size="2"&gt;Apple Java&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;这是苹果公司在系统中内置的运行 Java 代码的程序。这图标所表现的大概就是一名程序员的生活状态，喝杯咖啡还要在纸巾上写上两句 Java 的代码。这得多大的瘾啊~&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;&lt;img style="display: block; margin-left: auto; margin-right: auto;" src="http://pic002.cnblogs.com/images/2011/11583/2011052009233741.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 16px;" size="2"&gt;如果你还知道更多苹果图标背后的故事，或者其他类似这样高科技背后的趣味小故事，不妨在新春假期之际与我们一起分享。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2046715.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2011/05/20/2046715.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/wormday/archive/2011/05/18/2049561.html</id><title type="text">Apple Mac OS X每日一技巧027:可以滚动非活动窗口</title><summary type="text">在Win下，操作某个窗口的前提是先把这个窗口变成活动窗口在Mac下面不必如此，只需要将鼠标放在非活动窗口上面，双指 或者 拨动滚轮就可以了不过键盘上的方向键貌似不行。。。</summary><published>2011-05-18T01:10:00Z</published><updated>2011-05-18T01:10:00Z</updated><author><name>小墨的童鞋</name><uri>http://www.cnblogs.com/wormday/</uri></author><link rel="alternate" href="http://www.cnblogs.com/wormday/archive/2011/05/18/2049561.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/wormday/archive/2011/05/18/2049561.html"/><content type="html">&lt;p&gt;在Win下，操作某个窗口的前提是先把这个窗口变成活动窗口&lt;/p&gt;&#xD;
&lt;p&gt;在Mac下面不必如此，只需要将鼠标放在非活动窗口上面，&lt;/p&gt;&#xD;
&lt;p&gt;双指 或者 拨动滚轮就可以了&lt;/p&gt;&#xD;
&lt;p&gt;不过键盘上的方向键貌似不行。。。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img src="http://pic002.cnblogs.com/images/2011/11583/2011051809055885.jpg" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/wormday/aggbug/2049561.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/wormday/archive/2011/05/18/2049561.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
