blob: a9baf60a0b8102a573587a0a0348976edcdd3a9b (
plain)
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
136
137
|
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
.assembly extern legacy library mscorlib {}
.assembly extern System.Console
{
.publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A )
.ver 4:0:0:0
}
.assembly initobj.exe{ //This byte field requests that this assembly not be verified at run time and corresponds to this C# declaration:
//[assembly:System.Security.Permissions.SecurityPermissionAttribute( [mscorlib]System.Security.Permissions.SecurityAction.RequestMinimum, Flags=System.Security.Permissions.SecurityPermissionFlag.SkipVerification )]
.permission reqmin ['mscorlib']System.Security.Permissions.SecurityPermissionAttribute ( "SkipVerification" = true )
}
.class public value sealed valClass{
.field public int32 int32_Field
.field public static int32 int32_SField
.field public float32 float32_Field
.field public static float32 float32_SField
.field public int32* int32_ptr_Field
.field public static int32* int32_ptr_SField
}
.class public _initoj {
//-------------------------
// Entry point - Main -
//-------------------------
.method public static int32 main(class [mscorlib]System.String[]) {
.entrypoint
.locals (value class valClass, int32)
.maxstack 10
//----------------
// begin testing -
//----------------
//Set all valClass fields to a known state
ldloca 0
ldc.i4 0xAB
unaligned. 0x2
stfld int32 valClass::int32_Field
ldc.i4 0xCD
stsfld int32 valClass::int32_SField
ldloca 0
ldc.r4 8.8
unaligned. 0x2
stfld float32 valClass::float32_Field
ldc.r4 9.9
stsfld float32 valClass::float32_SField
ldloca 0
ldloca 1
unaligned. 0x2
stfld int32* valClass::int32_ptr_Field
ldloca 1
stsfld int32* valClass::int32_ptr_SField
//Check the state of all valClass fields to be sure they were initialized correctly
ldloc 0
unaligned. 0x2
ldfld int32 valClass::int32_Field
ldc.i4 0xAB
bne.un FAIL
ldsfld int32 valClass::int32_SField
ldc.i4 0xCD
bne.un FAIL
ldloc 0
unaligned. 0x2
ldfld float32 valClass::float32_Field
ldc.r4 8.8
bne.un FAIL
ldsfld float32 valClass::float32_SField
ldc.r4 9.9
bne.un FAIL
ldloc 0
unaligned. 0x2
ldfld int32* valClass::int32_ptr_Field
ldloca 1
bne.un FAIL
ldsfld int32* valClass::int32_ptr_SField
ldloca 1
bne.un FAIL
//Call initobj
ldloca 0
initobj valClass
//Make sure all fields are set to zero or null and all static fields are unchanged.
ldloc 0
unaligned. 0x2
ldfld int32 valClass::int32_Field
ldc.i4 0x0
bne.un FAIL
ldsfld int32 valClass::int32_SField
ldc.i4 0xCD
bne.un FAIL
ldloc 0
unaligned. 0x2
ldfld float32 valClass::float32_Field
ldc.r4 0.0
bne.un FAIL
ldsfld float32 valClass::float32_SField
ldc.r4 9.9
bne.un FAIL
ldloc 0
unaligned. 0x2
ldfld int32* valClass::int32_ptr_Field
ldnull
bne.un FAIL
ldsfld int32* valClass::int32_ptr_SField
ldloca 1
bne.un FAIL
PASS:
ldc.i4 0x64
ret
//----------------
FAIL:
ldc.i4 0x0
ret
}
}
|