Finishing an Introductory Look at CIL - Conclusion
(Page 7 of 7 )
Here is the CIL version of the prime number program in its entirety:
.assembly extern mscorlib {}
.assembly FindPrimes {}
.class public FindPrimes
{
.method public static void Main(string[] args)
{
.entrypoint
.maxstack 2
.locals init (int32 i, int32 limit, int32 f)
ldc.i4.2
stloc i
outer_condition:
ldloc i
ldc.i4 1000000
bgt outer_done
// outer loop contents
ldc.i4.2
stloc f
ldloc i
conv.r8
call float64 [mscorlib]System.Math::Sqrt(float64)
conv.i4
stloc limit
inner_condition:
ldloc f
ldloc limit
bgt inner_done
// inner loop contents
ldloc i
ldloc f
rem
ldc.i4.0
beq outer_counter
ldc.i4.1
ldloc f
add
stloc f
br.s inner_condition
inner_done:
// the number is prime!
ldloc i
call void [mscorlib]System.Console::WriteLine(int32)
outer_counter:
ldc.i4.1
ldloc i
add
stloc i
br.s outer_condition
outer_done:
ldstr "Done!"
call void [mscorlib]System.Console::WriteLine(string)
ret
}
}
Yes, CIL is quite complicated, but is it worth knowing a little bit about? Absolutely. You should now know a little bit more about what happens to your C# (or Visual Basic, or whatever .NET language you prefer) program after you hit the compile button in Visual Studio. The source, no matter what language it may be in, is translated to CIL and then assembled.
This common language ties every .NET language together and enables .NET to support a diversity of languages. In any case, after recreating a seemingly simple program in CIL, you should have an appreciation of what languages such as C# and Visual Basic do for you, and for the .NET platform as a whole.
| DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware. |