Introduction

 

The .NET languages are growing more pervasive by each passing day. We, therefore decided to explore the world of Intermediate Language (IL), a language to which all the source code written in various languages such as C#, COBOL etc. get compiled. IL represents the transient stage in the process of conversion of source code into machine language. It is inescapably imperative to gain mastery over IL, because knowledge of IL translates into competence over IL code that may have originally been written in any programming language. Thus, it provides a common platform to all the programming languages. Realising its importance in the scheme of things in the .NET world, we decided to get under the skin of IL and unravel its mysteries.

 

IL puts an end to the unending dissidence amongst programmers with regard to the superiority of one programming language over the others. To this end, IL is a great leveller. It is also a stupendous facilitator because, in the .NET world, one part of the code may have been written in COBOL, while another may have been written in C#, but it all eventually gets converted into IL. This provides great freedom and flexibility to a programmer to select the language he/she is most familiar with and does away with the need to constantly retrain oneslf to learn new languages that seem to crop up every other day.

 

Our modus operandi has been to strip the sheen of complexity surrounding IL by presenting complex concepts in a simple and comprehensible manner. These concepts have been corroborated with lucid examples. We have put into service all the powers of clairvoyance at our disposal to discover and illustrate concepts of IL, that are not readily discernible to the layman.

 

To facilitate the understanding of the sample programs, in every example, we have first presented the source code of the programs in the C# language, and then, we have offered their equivalent IL code. Thereafter, we have applied reverse engineering to fathom the IL code by unravelling the equivalent C# code. We have demonstrated how, in some cases, IL transcends the limitations of conventional programming languages; while in others, it falls awfully short of expectations. Though we don't expect undue approbation, it would not be immodest to mention that, while working with the Beta version of IL, we have unearthed many undocumented features and lacunae, which we have highlighted in the book for your benefit.

 

To conclude, it can be stated that the aim of this book is to explain the various nuances of IL and to make you adept at understanding IL code. It is also our desire to alleviate your fear of lower level languages. The lure of IL lies in its simplicity coupled with its tremendous power, which makes an intoxicating cocktail. But, don't be beguiled by the apparant simplicity of the examples. We don't expect an acquiescent attitude from you. Instead, we implore you to try out all the examples by yourelf and ascertain their outcome. Thus, don't stand ruminating at the brink of this exciting sea of knowledge. Dive right in! We assure you that you shall come out a winner at the end of this sojourn into the world of IL.

 

Minimum Requirements

 

The software requirements to successfully run all the programs in this book  are

 

  Operating System - Windows 98/NT/2000

  Internet Explorer 5.5

  .Net Framework SDK Beta 1 (111 MB)

 

Internet Explorer 5.5 can be downloaded off the Microsoft site

  http://www.microsoft.com/windows/ie/download/ie55sp1.htm

 

Net Framework SDK Beta 1 can be downloaded off the Microsoft site

  http://download.microsoft.com/download/VisualStudioNET/Install/2204/NT5/EN-US/setup.exe

Alternatively, you can visit the download section at Microsoft ( http://msdn.microsoft.com/downloads/default.asp ) and download the .Net framework  SDK Beta 1 under the Software Development Kit option.

 

 

Acknowledgements

 

I wish to thank a number of people who gave me their support, new ideas and inspiration while writing this book.

 

First and foremost, thanks to Manish Jain, BPB publication for publishing the book.

 

Special thanks to my co-authors, Akash and Sonal, who have put in their very best in the work assigned to them as without them and their efforts  the book would have never seen the light of day.

 

Thanks to Tanuja Sodhi, an ex-naval officer from the first batch of lady officers and an MBA from JBIMS for editing the book. She is presently freelancing as a creative writer.

 

Thanks to my cover designers, Altaf Hemani and Kishore Rohra, for designing the cover.

 

Thanks to Manish Purohit for putting in late hours, formatting and aligning the text in the book.

 

To, Pradeep Mukhi and Shivanand Shetty, who made it simple for me and my co-authors to come up with the book. They have always been a source of inspiration and encouragement.

 

A long list of friends and my family need a mention here for their patience and cooperation on this book while it was being written.

 

 

 -Vijay Mukhi