Chapter 2. Getting Started with Rotor

The expertise needed to build a virtual machine spans disciplines as diverse as systems design, compiler theory, and hardware architecture. Understanding how and why this is true is important, both for those using virtual machines to solve day-to-day problems and for those extending or implementing them. The purpose of this book is to explain the CLI specification in these terms, drawing on Rotor’s source code for examples and clarification.

Before getting to these details, we’ll take a detailed look at building, running, debugging, and modifying managed code with Rotor. A simple example will demonstrate these concepts: a managed component that echoes its input back to the console. This example will form a recurring basis for continuing discussions of Rotor’s implementation in the chapters that follow.

A Simple Component Assembly

Consider the simple CLI component in Example 2-1, which consists of a single type named Echo. The Echo type has a single property named EchoString, and a single method, DoEcho.

Example 2-1. A simple CLI component expressed in C# code

public class Echo
{
  private string toEcho = null;

    public string EchoString {
    get { return toEcho; }
    set { toEcho = value; }
  }

  public string DoEcho(  )
  {
    if (toEcho == null)
      throw new Exception("Alas, there is nothing to echo!");
    return toEcho;
  }
}

This component is written using the C# programming language and can be compiled into a CLI component using any C# compiler. C# was chosen for examples ...

Get Shared Source CLI Essentials now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.