-3-
在IL中,標號(label)是一個末尾帶有冒號(即:)的名稱。它使我們能夠從代碼的一部 分無條件地跳轉到另一部分。我們經常在由反編譯器生成的IL代碼中看到這個標號。例如:
IL_0000: ldstr "hi"
IL_0005: call void [mscorlib]System.Console::WriteLine(class System.String)
IL_000a: call void zzz::abc()
IL_000f: ret
在冒號前面的詞就是標號。在下面給出的程序中,我們在函數abc中創建一 個名為a2的標號。指令br用於隨時跳轉到程序中的任何標號。
a.il
.assembly mukhi {}
.class private auto ansi zzz extends System.Object
{
.method public hidebysig static void vijay() il managed
{
.entrypoint
.locals (int32 V_0,class zzz V_1)
newobj instance void zzz::.ctor()
stloc.1
call int32 zzz::abc()
stloc.0
ldloc.0
call void [mscorlib]System.Console::WriteLine(int32)
ret
}
.method private hidebysig static int32 abc() il managed
{
.locals (int32 V_0)
ldc.i4.s 20
br.s a2
ldc.i4.s 30
a2: ret
}
}
Output
20