Common Intermediate Language/Basic syntax

The syntax of CIL is similar to C-based languages and traditional assembly languages.

Statements

edit

Statements are used to perform operations in CIL. Statements consist of an instruction with and any needed arguments after.

ldc.i4 2 // give one argument (2)
ldc.i4.5 // argument is part of the instruction (5)
add // no arguments given
call void [mscorlib]System.Console::WriteLine(int32) // give a method signature as an argument

Blocks

edit

Blocks are used to group elements and create bodies (e.g. method body). They are created by placing both an opening and closing curly-brace, with elements in between.

.method public void MyMethod()
{ // Block used to form the method body
    ldstr "Hello, World!"
    call void [mscorlib]System.Console::WriteLine(int32)

    { // Blocks can be nested
        ldstr "Goodbye, World!"
        call void [mscorlib]System.Console::WriteLine(int32)
    }
}

Comments

edit

Comments are used to create inline documentation within the source code. Comments are ignored by the compiler and do not affect the resulting program. CIL has two types of comments:

Single-line comments
// is used to create these comments, and anything after will be part of the comment until the end of the line.
// ldstr "ignored" this line is ignored by the compiler
ldstr "Not ignored" // this instruction is seen, but this message isn't
Multi-line comments
These comments can be multiple lines long. These comments are started with /* and ended with */; Any text between will be ignored by the compiler.
/*
This is a multi-line comment
that's two lines long.
*/