WEB开发网
开发学院软件开发C语言 《C# to IL》第二章 IL基础 阅读

《C# to IL》第二章 IL基础

 2009-06-01 08:31:09 来源:WEB开发网   
核心提示: 因此,ldc系列用于放置一个常量数字到栈上,《C# to IL》第二章 IL基础(8),而stloc用于从栈上获取一个值,并将一个变量初始化为这个值,因为变量是静态的,我们使用ldc来把值6放到栈上,a.cs class zzz { static int i = 6; public lo

因此,ldc系列用于放置一个常量数字到栈上,而stloc用于从栈上获取一个值,并将一个变量初始化为这个值。

a.cs

    class zzz
    {
        static int i = 6;
        public long j = 7;
        public static void Main()
        {
        }
    }

a.il

.assembly mukhi {}
.class private auto ansi zzz extends System.Object
{
.field private static int32 i
.field public int64 j
.method public hidebysig static void vijay() il managed
{
.entrypoint
ret
}
.method public hidebysig specialname rtspecialname static void .cctor() il managed
{
ldc.i4.6
stsfld int32 zzz::i
ret
}
.method public hidebysig specialname rtspecialname instance void .ctor() il managed
{
ldarg.0
ldc.i4.7
conv.i8
stfld      int64 zzz::j
ldarg.0
call instance void [mscorlib]System.Object::.ctor()
ret
}
}

历经艰难之后,现在,你终于看到了成功,并明白我们为什么想要你首先阅读本书了。

让我们理解上面的代码,每次一个字段。我们创建了一个静态变量i,并将其初始化为值6。由于没有为变量i指定一个访问修饰符,默认值就是private。C#中的修饰符static也适用于IL中的变量。

实际的操作现在才开始。变量需要被分配一个初始值。这个值必须只能在静态改造函数中分配,因为变量是静态的。我们使用ldc来把值6放到栈上。注意到这里并没有使用到locals指令。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:to IL 第二章

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接