158 lines
3.5 KiB
Plaintext
158 lines
3.5 KiB
Plaintext
.assembly '4darray' { }
|
|
.assembly extern 'mscorlib' {
|
|
.ver 1:0:5000:0
|
|
.publickeytoken = ( b7 7a 5c 56 19 34 e0 89 )
|
|
}
|
|
.class sealed 'X'
|
|
extends [mscorlib]System.ValueType
|
|
{
|
|
.field public int32 'a'
|
|
.field public int32 'b'
|
|
.method hidebysig specialname rtspecialname public void .ctor(int32 'a',int32 'b') {
|
|
ldarg.0
|
|
ldarg 1 // a
|
|
stfld int32 'X'::'a'
|
|
ldarg.0
|
|
ldarg 2 // b
|
|
stfld int32 'X'::'b'
|
|
ret
|
|
.maxstack 2
|
|
} // end of constructor X.X
|
|
} // end of struct X
|
|
.class 'T'
|
|
extends [mscorlib]System.Object
|
|
{
|
|
.method hidebysig static public void 'print'(int32 'x') {
|
|
ldstr "{0}"
|
|
ldarg 0 // x
|
|
box int32
|
|
call void [mscorlib]System.Console::'WriteLine'(string,object)
|
|
ret
|
|
.maxstack 2
|
|
} // end of method T.print
|
|
.method hidebysig static public void 'Main'() {
|
|
.entrypoint
|
|
.locals init ([0]int32[0...,0...,0...,0...] 't0')
|
|
ldc.i4 5
|
|
ldc.i4 5
|
|
ldc.i4 5
|
|
ldc.i4 5
|
|
newobj instance void int32[0...,0...,0...,0...]::.ctor(int32,int32,int32,int32)
|
|
stloc 0 // a
|
|
ldloc 0 // a
|
|
ldc.i4 1
|
|
ldc.i4 2
|
|
ldc.i4 3
|
|
ldc.i4 4
|
|
call instance int32 & int32[0...,0...,0...,0...]::Address(int32,int32,int32,int32)
|
|
ldloc 0 // a
|
|
ldc.i4 4
|
|
ldc.i4 3
|
|
ldc.i4 2
|
|
ldc.i4 1
|
|
call instance int32 & int32[0...,0...,0...,0...]::Address(int32,int32,int32,int32)
|
|
call void 'T'::'f'(int32&,int32&)
|
|
ldloc 0 // a
|
|
ldc.i4 4
|
|
ldc.i4 4
|
|
ldc.i4 4
|
|
ldc.i4 4
|
|
ldloc 0 // a
|
|
ldc.i4 1
|
|
ldc.i4 2
|
|
ldc.i4 3
|
|
ldc.i4 4
|
|
call instance int32 int32[0...,0...,0...,0...]::Get(int32,int32,int32,int32)
|
|
call instance void int32[0...,0...,0...,0...]::Set(int32,int32,int32,int32,int32)
|
|
ldloc 0 // a
|
|
ldc.i4 1
|
|
ldc.i4 2
|
|
ldc.i4 3
|
|
ldc.i4 4
|
|
call instance int32 int32[0...,0...,0...,0...]::Get(int32,int32,int32,int32)
|
|
call void 'T'::'print'(int32)
|
|
ldloc 0 // a
|
|
ldc.i4 4
|
|
ldc.i4 3
|
|
ldc.i4 2
|
|
ldc.i4 1
|
|
call instance int32 int32[0...,0...,0...,0...]::Get(int32,int32,int32,int32)
|
|
call void 'T'::'print'(int32)
|
|
.locals init ([1]int32 't1')
|
|
ldc.i4 0
|
|
stloc 1 // sum
|
|
.locals init ([2]int32 't2')
|
|
.locals init ([3]class [mscorlib]System.Collections.IEnumerator 't3')
|
|
ldloc 0 // a
|
|
callvirt instance class [mscorlib]System.Collections.IEnumerator [mscorlib]System.Array::'GetEnumerator'()
|
|
stloc 3 // t3
|
|
.try {
|
|
br $2
|
|
$1:
|
|
ldloc 3 // t3
|
|
callvirt instance object [mscorlib]System.Collections.IEnumerator::'get_Current'()
|
|
unbox int32
|
|
ldind.i4
|
|
stloc 2 // i
|
|
ldloc 1 // sum
|
|
ldloc 2 // i
|
|
add
|
|
.locals init ([4]int32 't4')
|
|
stloc 4 // t4
|
|
ldloc 4 // t4
|
|
stloc 1 // sum
|
|
$2:
|
|
ldloc 3 // t3
|
|
callvirt instance bool [mscorlib]System.Collections.IEnumerator::'MoveNext'()
|
|
brtrue $1
|
|
$3:
|
|
leave $5
|
|
}
|
|
finally {
|
|
ldloc 3 // t3
|
|
.locals init ([5]class [mscorlib]System.IDisposable 't5')
|
|
isinst class [mscorlib]System.IDisposable
|
|
stloc 5 // t5
|
|
ldloc 5 // t5
|
|
brfalse $6
|
|
ldloc 5 // t5
|
|
callvirt instance void [mscorlib]System.IDisposable::'Dispose'()
|
|
$6:
|
|
endfinally
|
|
} // end .try
|
|
$5:
|
|
$4:
|
|
ldstr "{0} {1}"
|
|
ldloc 1 // sum
|
|
box int32
|
|
ldloc 0 // a
|
|
call instance int32 [mscorlib]System.Array::'get_Length'()
|
|
box int32
|
|
call void [mscorlib]System.Console::'WriteLine'(string,object,object)
|
|
ret
|
|
.maxstack 10
|
|
} // end of method T.Main
|
|
.method hidebysig static private void 'f'(int32& 'a',int32& 'b') {
|
|
ldarg 0 // a
|
|
ldind.i4
|
|
ldc.i4 1
|
|
add
|
|
.locals init ([0]int32 't0')
|
|
stloc 0 // t0
|
|
ldarg 0 // a
|
|
ldloc 0 // t0
|
|
stind.i4
|
|
ldarg 1 // b
|
|
ldc.i4 2
|
|
stind.i4
|
|
ret
|
|
.maxstack 2
|
|
} // end of method T.f
|
|
.method hidebysig specialname rtspecialname public void .ctor() {
|
|
ldarg.0
|
|
call instance void [mscorlib]System.Object::.ctor()
|
|
ret
|
|
.maxstack 1
|
|
} // end of constructor T.T
|
|
} // end of class T
|