Skip to content
This repository
Newer
Older
100644 493 lines (441 sloc) 13.052 kb
5e8d5f46 »
2010-11-14 Add four more versions of LoopMicro + timing sheet
1 .assembly extern mscorlib { }
2 .assembly 'LoopMicro'
3 {
4 .permissionset reqmin = (
5 3C 00 50 00 65 00 72 00 6D 00 69 00 73 00 73 00 // <.P.e.r.m.i.s.s.
6 69 00 6F 00 6E 00 53 00 65 00 74 00 20 00 63 00 // i.o.n.S.e.t. .c.
7 6C 00 61 00 73 00 73 00 3D 00 22 00 53 00 79 00 // l.a.s.s.=.".S.y.
8 73 00 74 00 65 00 6D 00 2E 00 53 00 65 00 63 00 // s.t.e.m...S.e.c.
9 75 00 72 00 69 00 74 00 79 00 2E 00 50 00 65 00 // u.r.i.t.y...P.e.
10 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n.
11 53 00 65 00 74 00 22 00 0A 00 76 00 65 00 72 00 // S.e.t."...v.e.r.
12 73 00 69 00 6F 00 6E 00 3D 00 22 00 31 00 22 00 // s.i.o.n.=.".1.".
13 3E 00 0A 00 3C 00 49 00 50 00 65 00 72 00 6D 00 // >...<.I.P.e.r.m.
14 69 00 73 00 73 00 69 00 6F 00 6E 00 20 00 63 00 // i.s.s.i.o.n. .c.
15 6C 00 61 00 73 00 73 00 3D 00 22 00 53 00 79 00 // l.a.s.s.=.".S.y.
16 73 00 74 00 65 00 6D 00 2E 00 53 00 65 00 63 00 // s.t.e.m...S.e.c.
17 75 00 72 00 69 00 74 00 79 00 2E 00 50 00 65 00 // u.r.i.t.y...P.e.
18 72 00 6D 00 69 00 73 00 73 00 69 00 6F 00 6E 00 // r.m.i.s.s.i.o.n.
19 73 00 2E 00 53 00 65 00 63 00 75 00 72 00 69 00 // s...S.e.c.u.r.i.
20 74 00 79 00 50 00 65 00 72 00 6D 00 69 00 73 00 // t.y.P.e.r.m.i.s.
21 73 00 69 00 6F 00 6E 00 2C 00 20 00 6D 00 73 00 // s.i.o.n.,. .m.s.
22 63 00 6F 00 72 00 6C 00 69 00 62 00 2C 00 20 00 // c.o.r.l.i.b.,. .
23 56 00 65 00 72 00 73 00 69 00 6F 00 6E 00 3D 00 // V.e.r.s.i.o.n.=.
24 32 00 2E 00 30 00 2E 00 30 00 2E 00 30 00 2C 00 // 2...0...0...0.,.
25 20 00 43 00 75 00 6C 00 74 00 75 00 72 00 65 00 // .C.u.l.t.u.r.e.
26 3D 00 6E 00 65 00 75 00 74 00 72 00 61 00 6C 00 // =.n.e.u.t.r.a.l.
27 2C 00 20 00 50 00 75 00 62 00 6C 00 69 00 63 00 // ,. .P.u.b.l.i.c.
28 4B 00 65 00 79 00 54 00 6F 00 6B 00 65 00 6E 00 // K.e.y.T.o.k.e.n.
29 3D 00 62 00 37 00 37 00 61 00 35 00 63 00 35 00 // =.b.7.7.a.5.c.5.
30 36 00 31 00 39 00 33 00 34 00 65 00 30 00 38 00 // 6.1.9.3.4.e.0.8.
31 39 00 22 00 0A 00 76 00 65 00 72 00 73 00 69 00 // 9."...v.e.r.s.i.
32 6F 00 6E 00 3D 00 22 00 31 00 22 00 0A 00 46 00 // o.n.=.".1."...F.
33 6C 00 61 00 67 00 73 00 3D 00 22 00 53 00 6B 00 // l.a.g.s.=.".S.k.
34 69 00 70 00 56 00 65 00 72 00 69 00 66 00 69 00 // i.p.V.e.r.i.f.i.
35 63 00 61 00 74 00 69 00 6F 00 6E 00 22 00 2F 00 // c.a.t.i.o.n."./.
36 3E 00 0A 00 3C 00 2F 00 50 00 65 00 72 00 6D 00 // >...<./.P.e.r.m.
37 69 00 73 00 73 00 69 00 6F 00 6E 00 53 00 65 00 // i.s.s.i.o.n.S.e.
38 74 00 3E 00 0A 00 ) // t.>...
39 }
40
41 .class public auto ansi sealed LoopDel
42 extends [mscorlib]System.MulticastDelegate
43 {
44 .method public hidebysig specialname rtspecialname instance default
45 void '.ctor' (object A_1, native int A_2) runtime managed {}
46 .method public virtual hidebysig newslot instance default
47 class FrameD Invoke (class FrameD f) runtime managed {}
48 .method public virtual hidebysig newslot instance default
49 class [mscorlib]System.IAsyncResult BeginInvoke
50 (class FrameD f, class [mscorlib]System.AsyncCallback callback,
51 object 'object') runtime managed {}
52 .method public virtual hidebysig newslot instance default
53 class FrameD EndInvoke (class [mscorlib]System.IAsyncResult result)
54 runtime managed {}
55 }
56
57 .class public auto ansi sealed beforefieldinit FrameD
58 extends [mscorlib]System.Object
59 {
60 .field public class LoopDel dgt
61 .field public int32 lex
62
63 .method public hidebysig specialname rtspecialname
64 instance default void '.ctor' () cil managed
65 {
66 .maxstack 8
67 ldarg.0
68 call instance void object::'.ctor'()
69 ret
70 }
71 }
72
73 .class public auto ansi sealed beforefieldinit FrameI
74 extends [mscorlib]System.Object
75 {
76 .field public method class FrameI *(class FrameI) dgt
77 .field public int32 lex
78
79 .method public hidebysig specialname rtspecialname
80 instance default void '.ctor' () cil managed
81 {
82 .maxstack 8
83 ldarg.0
84 call instance void object::'.ctor'()
85 ret
86 }
87 }
88
89 .class public auto ansi abstract beforefieldinit LoopCls
90 extends [mscorlib]System.Object
91 {
92 .method family hidebysig specialname rtspecialname
93 instance default void '.ctor' () cil managed
94 {
95 .maxstack 8
96 ldarg.0
97 call instance void object::'.ctor'()
98 ret
99 }
100
101 .method public virtual hidebysig newslot abstract
102 instance default class FrameC Invoke (class FrameC f) cil managed { }
103 }
104
105 .class public auto ansi sealed beforefieldinit FrameC
106 extends [mscorlib]System.Object
107 {
108 .field public class LoopCls dgt
109 .field public int32 lex
110
111 .method public hidebysig specialname rtspecialname
112 instance default void '.ctor' () cil managed
113 {
114 .maxstack 8
115 ldarg.0
116 call instance void object::'.ctor'()
117 ret
118 }
119 }
120
121 .class auto ansi beforefieldinit Dgt1 extends LoopCls
122 {
123
124 .method public hidebysig specialname rtspecialname
125 instance default void '.ctor' () cil managed
126 {
127 .maxstack 8
128 ldarg.0
129 call instance void class LoopCls::'.ctor'()
130 ret
131 }
132
133 .method public virtual hidebysig
134 instance default class FrameC Invoke (class FrameC f) cil managed
135 {
136 .maxstack 5
137 ldarg.1
138 ldfld int32 FrameC::lex
139 brtrue noexit
140
141 ldc.i4.0
142 call void class [mscorlib]System.Environment::Exit(int32)
143 noexit:
144 ldarg.1
145 dup
146 ldfld int32 FrameC::lex
147 ldc.i4.1
148 sub
149 stfld int32 FrameC::lex
150 ldarg.1
151 ret
152 }
153 }
154
155 .class auto ansi beforefieldinit Dgt4 extends LoopCls
156 {
157
158 .method public hidebysig specialname rtspecialname
159 instance default void '.ctor' () cil managed
160 {
161 .maxstack 8
162 ldarg.0
163 call instance void class LoopCls::'.ctor'()
164 ret
165 }
166
167 .method public virtual hidebysig
168 instance default class FrameC Invoke (class FrameC f) cil managed
169 {
170 .maxstack 5
171 ldarg.1
172 ldfld int32 FrameC::lex
173 brtrue noexit
174
175 ldc.i4.0
176 call void class [mscorlib]System.Environment::Exit(int32)
177 noexit:
178 ldarg.1
179 dup
180 ldfld int32 FrameC::lex
181 ldc.i4.1
182 sub
183 stfld int32 FrameC::lex
184
185 ldarg.1
186 ldfld class LoopCls FrameC::dgt
187 ldarg.1
188 tail.
189 callvirt instance class FrameC class LoopCls::Invoke(class FrameC)
190 ret
191 }
192 }
193
194 .class public auto ansi beforefieldinit LoopMicro
195 extends [mscorlib]System.Object
196 {
197 .method public hidebysig specialname rtspecialname
198 instance default void '.ctor' () cil managed
199 {
200 .maxstack 8
201 ldarg.0
202 call instance void object::'.ctor'()
203 ret
204 }
205
206 .method private static hidebysig
207 default class FrameD Dgt0 (class FrameD f) cil managed
208 {
209 .maxstack 5
210 ldarg.0
211 ldfld int32 FrameD::lex
212 brtrue noexit
213
214 ldc.i4.0
215 call void class [mscorlib]System.Environment::Exit(int32)
216 noexit:
217 ldarg.0
218 dup
219 ldfld int32 FrameD::lex
220 ldc.i4.1
221 sub
222 stfld int32 FrameD::lex
223 ldarg.0
224 ret
225 }
226
227 .method public static hidebysig
228 default void RunLoop0 (int32 itr) cil managed
229 {
230 .maxstack 5
231 .locals init (
232 class FrameD th)
233 newobj instance void class FrameD::'.ctor'()
234 stloc.0
235 ldloc.0
236 ldarg.0
237 stfld int32 FrameD::lex
238 ldloc.0
239 ldnull
240 ldftn class FrameD class LoopMicro::Dgt0(class FrameD)
241 newobj instance void class LoopDel::'.ctor'(object, native int)
242 stfld class LoopDel FrameD::dgt
243
244 again:
245 ldloc.0
246 ldfld class LoopDel FrameD::dgt
247 ldloc.0
248 callvirt instance class FrameD class LoopDel::Invoke(class FrameD)
249 stloc.0
250 br again
251 }
252
253 .method public static hidebysig
254 default void RunLoop1 (int32 itr) cil managed
255 {
256 .maxstack 3
257 .locals init (
258 class FrameC V_0)
259 newobj instance void class FrameC::'.ctor'()
260 stloc.0
261 ldloc.0
262 ldarg.0
263 stfld int32 FrameC::lex
264 ldloc.0
265 newobj instance void class Dgt1::'.ctor'()
266 stfld class LoopCls FrameC::dgt
267
268 again:
269 ldloc.0
270 ldfld class LoopCls FrameC::dgt
271 ldloc.0
272 callvirt instance class FrameC class LoopCls::Invoke(class FrameC)
273 stloc.0
274 br again
275
276 }
277
278 .method private static hidebysig
279 default class FrameI Dgt2 (class FrameI f) cil managed
280 {
281 .maxstack 5
282 ldarg.0
283 ldfld int32 FrameI::lex
284 brtrue noexit
285
286 ldc.i4.0
287 call void class [mscorlib]System.Environment::Exit(int32)
288 noexit:
289 ldarg.0
290 dup
291 ldfld int32 FrameI::lex
292 ldc.i4.1
293 sub
294 stfld int32 FrameI::lex
295 ldarg.0
296 ret
297 }
298
299 .method public static hidebysig
300 default void RunLoop2 (int32 itr) cil managed
301 {
302 .maxstack 5
303 .locals init (
304 class FrameI th)
305 newobj instance void class FrameI::'.ctor'()
306 stloc.0
307 ldloc.0
308 ldarg.0
309 stfld int32 FrameI::lex
310 ldloc.0
311 ldftn class FrameI class LoopMicro::Dgt2(class FrameI)
312 stfld method class FrameI *(class FrameI) FrameI::dgt
313
314 again:
315 ldloc.0
316 ldloc.0
317 ldfld method class FrameI *(class FrameI) FrameI::dgt
318 calli class FrameI(class FrameI)
319 stloc.0
320 br again
321 }
322
323 .method private static hidebysig
324 default class FrameD Dgt3 (class FrameD f) cil managed
325 {
326 .maxstack 5
327 ldarg.0
328 ldfld int32 FrameD::lex
329 brtrue noexit
330
331 ldc.i4.0
332 call void class [mscorlib]System.Environment::Exit(int32)
333 noexit:
334 ldarg.0
335 dup
336 ldfld int32 FrameD::lex
337 ldc.i4.1
338 sub
339 stfld int32 FrameD::lex
340
341 ldarg.0
342 ldfld class LoopDel FrameD::dgt
343 ldarg.0
344 tail.
345 callvirt instance class FrameD class LoopDel::Invoke(class FrameD)
346 ret
347 }
348
349 .method public static hidebysig
350 default void RunLoop3 (int32 itr) cil managed
351 {
352 .maxstack 5
353 .locals init (
354 class FrameD th)
355 newobj instance void class FrameD::'.ctor'()
356 stloc.0
357 ldloc.0
358 ldarg.0
359 stfld int32 FrameD::lex
360 ldloc.0
361 ldnull
362 ldftn class FrameD class LoopMicro::Dgt3(class FrameD)
363 newobj instance void class LoopDel::'.ctor'(object, native int)
364 stfld class LoopDel FrameD::dgt
365
366 again:
367 ldloc.0
368 ldfld class LoopDel FrameD::dgt
369 ldloc.0
370 callvirt instance class FrameD class LoopDel::Invoke(class FrameD)
371 stloc.0
372 br again
373 }
374
375 .method public static hidebysig
376 default void RunLoop4 (int32 itr) cil managed
377 {
378 .maxstack 3
379 .locals init (
380 class FrameC V_0)
381 newobj instance void class FrameC::'.ctor'()
382 stloc.0
383 ldloc.0
384 ldarg.0
385 stfld int32 FrameC::lex
386 ldloc.0
387 newobj instance void class Dgt4::'.ctor'()
388 stfld class LoopCls FrameC::dgt
389
390 again:
391 ldloc.0
392 ldfld class LoopCls FrameC::dgt
393 ldloc.0
394 callvirt instance class FrameC class LoopCls::Invoke(class FrameC)
395 stloc.0
396 br again
397
398 }
399
400 .method private static hidebysig
401 default class FrameI Dgt5 (class FrameI f) cil managed
402 {
403 .maxstack 5
404 ldarg.0
405 ldfld int32 FrameI::lex
406 brtrue noexit
407
408 ldc.i4.0
409 call void class [mscorlib]System.Environment::Exit(int32)
410 noexit:
411 ldarg.0
412 dup
413 ldfld int32 FrameI::lex
414 ldc.i4.1
415 sub
416 stfld int32 FrameI::lex
417
418 ldarg.0
419 ldarg.0
420 ldfld method class FrameI *(class FrameI) FrameI::dgt
421 tail.
422 calli class FrameI(class FrameI)
423 ret
424 }
425
426 .method public static hidebysig
427 default void RunLoop5 (int32 itr) cil managed
428 {
429 .maxstack 5
430 .locals init (
431 class FrameI th)
432 newobj instance void class FrameI::'.ctor'()
433 stloc.0
434 ldloc.0
435 ldarg.0
436 stfld int32 FrameI::lex
437 ldloc.0
438 ldftn class FrameI class LoopMicro::Dgt5(class FrameI)
439 stfld method class FrameI *(class FrameI) FrameI::dgt
440
441 again:
442 ldloc.0
443 ldloc.0
444 ldfld method class FrameI *(class FrameI) FrameI::dgt
445 calli class FrameI(class FrameI)
446 stloc.0
447 br again
448 }
449
450 .method private static hidebysig
451 default void Main (string[] args) cil managed
452 {
453 .entrypoint
454 .maxstack 5
455 ldarg.0
456 ldc.i4.1
457 ldelem.ref
458 call int32 int32::Parse(string)
459 ldarg.0
460 ldc.i4.0
461 ldelem.ref
462 call int32 int32::Parse(string)
463 switch (l0, l1, l2, l3, l4, l5)
464 pop
465 ret
466
467 l0:
468 call void class LoopMicro::RunLoop0(int32)
469 ret
470
471 l1:
472 call void class LoopMicro::RunLoop1(int32)
473 ret
474
475 l2:
476 call void class LoopMicro::RunLoop2(int32)
477 ret
478
479 l3:
480 call void class LoopMicro::RunLoop3(int32)
481 ret
482
483 l4:
484 call void class LoopMicro::RunLoop4(int32)
485 ret
486
487 l5:
488 call void class LoopMicro::RunLoop5(int32)
489 ret
490 } // end of method LoopMicro::Main
491
492
493 }
494
Something went wrong with that request. Please try again.