WEB开发网
开发学院软件开发C语言 《C# to IL》第三章 选择和循环 阅读

《C# to IL》第三章 选择和循环

 2009-06-01 08:31:05 来源:WEB开发网   
核心提示: a.csclass zzz {static bool i;static int j = 19;public static void Main() {i = j > 16;System.Console.WriteLine(i); } }a.il.assembly mukhi {}.cl

a.cs

class zzz
{
static bool i;
static int j = 19;
public static void Main()
{
i = j > 16;
System.Console.WriteLine(i);
}
}

a.il

.assembly mukhi {}
.class private auto ansi zzz extends System.Object
{
.field private static bool i
.field private static int32 j
.method public hidebysig static void vijay() il managed
{
.entrypoint
ldsfld     int32 zzz::j
ldc.i4.s   16
cgt
stsfld     bool zzz::i
ldsfld     bool zzz::i
call void [mscorlib]System.Console::WriteLine(bool)
ret
}
.method public hidebysig specialname rtspecialname static void .cctor() il managed
{
ldc.i4.s   19
stsfld int32 zzz::j
ret
}
}

Output

True

现在我们将研究IL如何处理条件操作符。让我们考虑C#中的语句j>i16。IL首先把值j放到栈上,也就是常量值16的前面。随后它会调用cgt操作,这是它首次在我们的源代码中出现。这个指令检查栈上的第1个值是否大于第2个。如果是,那么它会把值1(TRUE)放到栈上,否则它会把值0(FALSE)放到栈上。这个值随后被存储到变量i中。使用WritleLine函数,就会生成布尔值的输出,从而我们看到显示True。

同样,操作符<被转换为clt指令,它会检查栈上的第1个值是否小于第2个。从而我们看到IL具有它自己的一套逻辑操作符,对基本的逻辑运算进行内部处理。

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

Tags:to IL 第三章

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