1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 )
.ver 2:0:0:0
}
.assembly b607586
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module b607586.exe
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003
.corflags 0x00000001
.class public auto ansi beforefieldinit Class extends [mscorlib]System.Object
{
.method private hidebysig static int32 Main() cil managed
{
.entrypoint
.maxstack 5
.locals init ([0] int32 CS$1$0000)
IL_0000: nop
ldc.i4.0
ldc.i4.2
ldc.i4.3
ldc.i4.4
newarr [mscorlib]System.Int32
ldc.i4.5
call void Class::ConvertView(int32, int32, int32, int32[], int32)
IL_0011: ldc.i4.s 100
IL_0012: stloc.0
IL_0013: br.s IL_0015
IL_0015: ldloc.0
IL_0016: ret
}
.method public hidebysig specialname rtspecialname instance void .ctor() cil managed
{
.maxstack 8
ldarg.0
call instance void [mscorlib]System.Object::.ctor()
ret
}
.method private hidebysig static void dosomething(int32 a, string b, string c) cil managed
{
.maxstack 8
nop
ret
}
.method assembly hidebysig static void ConvertView(int32 a, int32 b, int32 c, int32[] d, int32 e) cil managed
{
.maxstack 3
.locals init (
[0] int32 dmember,
[1] bool CS$4$0000,
[2] int32[] CS$6$0001,
[3] int32 CS$7$0002)
IL_0001: ldarg.0
IL_0002: ldc.i4.0
IL_0003: ceq
IL_0007: brfalse afterfinally
br begintry
afterfinally:
IL_0009: nop
IL_000a: ldarg.0
IL_000b: ldarg.s e
IL_000d: brtrue.s IL_0016
IL_000f: ldsfld string [mscorlib]System.String::Empty
IL_0014: br joinpoint
IL_0016: ldarga.s a
IL_0018: call instance string [mscorlib]System.Int32::ToString()
br joinpoint
begintry:
.try
{
IL_002b: ldarg.3
IL_002c: stloc.2
IL_002d: ldc.i4.0
IL_002e: stloc.3
IL_002f: br.s IL_0080
IL_0031:
ldloc.2
IL_0032: ldloc.3
IL_0033: ldelem.i4
IL_0034: stloc.0
IL_0035: nop
IL_007a: nop
IL_007b: nop
IL_007c: ldloc.3
IL_007d: ldc.i4.1
IL_007e: add
IL_007f: stloc.3
IL_0080: ldloc.3
IL_0081: ldloc.2
IL_0082: ldlen
IL_0083: conv.i4
IL_0084: clt
IL_0086: stloc.1
IL_0087: ldloc.1
IL_0088: brtrue.s IL_0031
IL_008a: nop
IL_008b: leave.s IL_00c3
}
finally
{
IL_008d: nop
IL_008e: ldstr "in outer finally"
IL_0093: call void [mscorlib]System.Console::WriteLine(string)
IL_00c2: endfinally
}
joinpoint:
IL_001d: ldstr "the bad string"
IL_0022: call void Class::dosomething(int32, string, string)
ldloc 0
brfalse begintry
IL_00c3: nop
IL_00c4: ret
}
}
|