接觸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); } }
掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.wangchenghua.com/post/1901/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料
查 看2022高級編程視頻教程免費獲取