Web hosting rating - CHAPTER 15 UNDERSTANDING CIL AND THE 502

CHAPTER 15 UNDERSTANDING CIL AND THE 502 THE ROLE OF DYNAMIC ASSEMBLIES .class public auto ansi beforefieldinit CILCarInfo extends [mscorlib]System.Object { .method public hidebysig static void Display(class CILCars.CILCar c) cil managed { .maxstack 8 // We need a local string variable. .locals init ([0] string caption) // Load string and the incoming CILCar onto the stack. ldstr “{0}’s speed is:” ldarg.0 // Now place the value of the CILCar’s petName on the // stack and call the static String.Format() method. ldfld string CILCars.CILCar::petName call string [mscorlib]System.String::Format(string, object) stloc.0 // Now load the value of the currSpeed field and get its string // representation (note call to ToString() ). ldarg.0 ldflda int32 CILCars.CILCar::currSpeed call instance string [mscorlib]System.Int32::ToString() ldloc.0 // Now call the MessageBox.Show() method with loaded values. call valuetype [System.Windows.Forms] System.Windows.Forms.DialogResult [System.Windows.Forms] System.Windows.Forms.MessageBox::Show(string, string) pop ret } } Although the amount of CIL code is a bit more than you see in the implementation of CILCar, things are still rather straightforward. First, given that you are defining a static method, you don t have to be concerned with the hidden object reference (thus, the ldarg.0 opcode really does load the incoming CILCar argument). The method begins by loading a string (”{0}’s speed is”) onto the stack, followed by the CILCar argument. Once these two values are in place, you load the value of the petName field and call the static System.String.Format() method to substitute the curly bracket placeholder with the CILCar s pet name. The same general procedure takes place when processing the currSpeed field, but note that you use the ldarga opcode, which loads the argument address onto the stack. At this point, you call System.Int32.ToString() to transform the value at said address into a string type. Finally, once both strings have been formatted as necessary, you call the MessageBox.Show() method. At this point, you are able to compile your new *.dll using ilasm.exe with the following command: ilasm /dll CILCars.il and verify the contained CIL using peverify.exe: peverify CILCars.dll
If you are searching for cheap webhost for your web application, please visit MySQL5 Web Hosting services.

Leave a Reply