通过HelloWord认识MSIL

托管程序的编译过程如下图所示

 

其中MSIL(Microsoft 中间语言)起到了承上启下的作用,它介于源代码(Source Code)和机器代码(Machine Code)之间,因为MS或者其他组织为我们提供了从源代码到MSIL的编译器,所以我们能将C#,VB,J#,C++,JS等等高级语言的源程序清单编译成为MSIL,而MSIL代码无法直接运行,必须根据特定的CPU指令,通过JIT(实时编译器)将MSIL代码编译成为机器代码。这样就完成了对机器代码和高级语言之间的隔离。使得各种编程语言都能在CLR下得以统一的实现。

涉及到的基础知识比较多,难以赘述,先通过最简单的程序来认识一下MSIL吧。

用C#编写下面的程序  

using System;
using System.Collections.Generic;
using System.Text;

namespace Lesson1
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            Console.WriteLine(
"Hello World!");
            Console.Read();
        }

    }

}

生成该代码Lesson1.exe,在.net framework中,提供了两个工具:

  • MSIL 汇编程序 (Ilasm.exe) 该工具能将MSIL代码生成可移植可执行的(PE)文件
  • MSIL反汇编程序(Ildasm.exe) 该工具能将可执行PE反汇编成为MSIL代码

下面就与Ildasm.exe来将可执行的Lesson1.exe文件反汇编成为包含MSIL代码的Lesson1.il的。方式为,通过SDK命令提示,如下图所示执行ildasm工具

 

就会在Lesson1.exe的同一目录产生一个包含着MSIL的Lesson1.il文件,打开该文件,文件如下:  

/Files/jillzhang/Lesson1.rar

原文地址:https://www.cnblogs.com/jillzhang/p/994738.html