通過HelloWord認識MSIL
托管程序的編譯過程如下圖所示

其中MSIL(Microsoft 中間語言)起到了承上啟下的作用,它介于源代碼(Source Code)和機器代碼(Machine Code)之間,因為MS或者其他組織為我們提供了從源代碼到MSIL的編譯器,所以我們能將C#,VB,J#,C++,JS等等高級語言的源程序清單編譯成為MSIL,而MSIL代碼無法直接運行,必須根據(jù)特定的CPU指令,通過JIT(實時編譯器)將MSIL代碼編譯成為機器代碼。這樣就完成了對機器代碼和高級語言之間的隔離。使得各種編程語言都能在CLR下得以統(tǒng)一的實現(xiàn)。
涉及到的基礎(chǔ)知識比較多,難以贅述,先通過最簡單的程序來認識一下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代碼生成可移植可執(zhí)行的(PE)文件
- MSIL反匯編程序(Ildasm.exe) 該工具能將可執(zhí)行PE反匯編成為MSIL代碼
下面就與Ildasm.exe來將可執(zhí)行的Lesson1.exe文件反匯編成為包含MSIL代碼的Lesson1.il的。方式為,通過SDK命令提示,如下圖所示執(zhí)行ildasm工具
就會在Lesson1.exe的同一目錄產(chǎn)生一個包含著MSIL的Lesson1.il文件,打開該文件,文件如下:
/Files/jillzhang/Lesson1.rar
作者:jillzhang
出處:http://jillzhang.cnblogs.com/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
出處:http://jillzhang.cnblogs.com/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。



浙公網(wǎng)安備 33010602011771號