The.NET runtime employs IL (Intermediate Language) as a bridging language. It combines all high-level.NET languages into a single language. This is why you can create multilingual applications in.NET. You can write a portion of your program in F# while utilizing an entirely different.NET language for the remainder. Behind the scenes, there is only one language: IL. In our previous tutorial, we talked about the compilation process. It's now time to start creating small programs in the.NET IL language.

Benefits of Learning.NET IL

  • Before we begin, let's grasp the importance of learning.NET IL:
  • Deeper Understanding: IL can assist you in understanding what happens "under the hood" when you run your.NET software. This can be useful for troubleshooting complex problems or improving performance.
  • Specific Tasks: Understanding IL is useful in some sophisticated applications, such as dynamic code generation.

Setting Up the Environment
There is no need to install any specialized programs! You can use a basic text editor such as Notepad++ (but Notepad++ is preferred). Visual Studio lacks a built-in template for writing IL code.

Launch your choice text editor and begin development.

.assembly extern mscorlib {}
.assembly firstILProject {}
.module firstILProject.exe

.class public Program extends [mscorlib]System.Object
{
 .method public static void MyMain(string[] args) cil managed
  {
  .entrypoint
  ldstr "Hello from IL code"
  call void [mscorlib]System.Console::WriteLine(string)
  call string [mscorlib]System.Console::ReadLine()
  pop
  ret
  }

}

Compiling Your Application
To compile your program, simply save it in any folder with the.il extension. Then, launch the "developer command prompt" and execute ilasm to compile your program.
Developer command prompt for Visual Studio.

Sample Code Structure
Here's a breakdown of a typical IL code structure:

External Reference
.assembly extern mscorlib {}

This line references the external mscorlib library, which provides functionalities your application might need.

Main Assembly
.assembly firstILProject {}

This line defines your application assembly and gives it a unique name (firstILProject in this case).

Module Definition
.module firstILProject.exe

This line defines a module named "firstILProject.exe." A module can represent an executable file (.exe) or a Dynamic-link library (DLL).

Class Definition
.class public extends [System.Object] firstILProject


This line creates a public class named firstILProject that inherits from System.Object (all classes in .NET inherit from System.Object by default).

Entry Point Method
.method static public void Main()

This line declares the Main method, the entry point for your console application.

Stack Operations

method static public void Main()

  .entrypoint

  ldstr "Hello, World!"  // Load string "Hello, World!" onto the stack
  call void [mscorlib]System.Console::WriteLine(string)  // Call the WriteLine method to print the string

  pop                     // Remove the string from the stack
  ret                      // Return from the method


  ldstr: This operator loads a string onto the stack.
  call: This keyword is used to call existing methods.
  pop: This removes the top element from the stack.
  ret: This returns from the current method.


Conclusion
This is a basic overview of writing .NET IL code. By understanding these concepts, you can begin creating simple applications and delve deeper into the world of .NET internals.

HostForLIFE ASP.NET Core 8.0.1 Hosting

European best, cheap and reliable ASP.NET hosting with instant activation. HostForLIFE.eu is #1 Recommended Windows and ASP.NET hosting in European Continent. With 99.99% Uptime Guaranteed of Relibility, Stability and Performace. HostForLIFE.eu security team is constantly monitoring the entire network for unusual behaviour. We deliver hosting solution including Shared hosting, Cloud hosting, Reseller hosting, Dedicated Servers, and IT as Service for companies of all size.