編程學習網 > 編程語言 > .NET開發 > 一步步教你讀懂NET中IL(附詳細圖)
2014
12-02

一步步教你讀懂NET中IL(附詳細圖)

  接觸NET也有1年左右的時間了,NET的內部如何實現對我產生了很大的吸引力,在msdn上找到一篇關于NET的IL代碼的圖解說明,寫的挺不錯的,在此基礎上加上個人的理解,每一個步驟都附帶圖解說明,如果你以前對NET中IL感覺晦澀難懂,頭昏腦漲的時候,沒關系,我相信這篇文章能讓你們對IL有一個比較詳細的理解,如果還不能幫助您,我也只能表示抱歉,因為這篇文章算比較詳細的了。個人覺得:能對這些底部的代碼是如何實現的進行了解和熟練的話,對以后自己寫代碼是有很大幫助的,好了,廢話不多說,現整理如下:

  .NET CLR 和 Java VM 都是堆疊式虛擬機器(Stack-Based VM),也就是說,它們的指令集(Instruction Set)都是採用堆疊運算的方式:執行時的資料都是先放在堆疊中,再進行運算。JavaVM 有約 200 個指令(Instruction),每個指令都是 1 byte 的 opcode(操作碼),后面接不等數目的參數;.NET CLR 有超過220個指令,但是有些指令使用相同的 opcode,所以 opcode 的數目比指令數略少。特別注意,.NET 的 opcode 長度並不固定,大部分的 opcode 長度是 1 byte,少部分是 2 byte。

  本文章以一個實際的例子,讓你了解堆疊式 VM 的運作原理,并對 .NET IL(Intermediate Language)有最基本的領略。

  下面是一個簡單的 C# 原始碼:                 

using System;
public class Test {
    public static void Main(String[] args) {
        int i=1;
        int j=2;
        int k=3;
        int answer = i+j+k;
        Console.WriteLine("i+j+k="+answer);
    }
}

掃碼二維碼 獲取免費視頻學習資料

Python編程學習

查 看2022高級編程視頻教程免費獲取