一步步教你读懂NET中IL(附详细图)

2018-07-20    来源:编程学习网

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

  接触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);
    }
}

标签: 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:8 种提升 ASP.NET Web API 性能的方法

下一篇:将HTML转成XHTML并清除一些无用的标签和属性