MSIL and máquinas virtuales basadas en pilas

Hace poco hice una charla sobre Roslyn y .NET en Argentina y Chile, y una de las preguntas que escuché un par de veces fue acerca de la decisión de que MSIL esté definido sobre una máquina virtual a base de valores en una pila, en vez de valores en registros (como puede ser, por ejemplo, LLVM).

Hay un buen resumen de argumentos a favor de esto se encuentra en Wikipedia aquí. También hay una versión de la página en español, pero tiene menos contenido - les recomiendo ver la versión en inglés. La versión corta es que el código generado suele ser más compacto, se simplifica la creción de interpretadores (y hasta cierto punto compiladores, aunque en mi opinión es menos interesante a este punto excepto para compiladores muy sencillos o para hardware muy simple).