[Mono-dev] Silly question (for documentation)

Kornél Pál kornelpal at hotmail.com
Mon Mar 6 05:46:53 EST 2006


Hi,

My opinion:

You have to write your own parsing, tokenizing and code generating
algorithms (automated tools can help) as each language is different.

System.Reflection.Emit is a low-level metadata and IL code generator
back-end that is the same for all .NET languages.

System.Reflection.Emit could be a good choice because can save your time as
you don't have to implement this functionality.

Unfortunately System.Reflection.Emit lack some important functionality
required C# and VB.NET compilers for example. This is because Microsoft is
not using System.Reflection.Emit in their major compilers and they didn't
realize these deficiencies.

mcs is using System.Reflection.Emit but note that Mono's
System.Reflection.Emit has some extra (either public or internal but
available) functionality that supports the C# compiler.

Mono's ilasm is using PEAPI, a fully managed metadata and IL code generator
that is more abstract than System.Reflection.Emit and is capable of emitting
invalid metadata as well. Both of these things are required by ilasm.

So it depends on what kind of PE generator backend you like or prefer but
you can't use System.Reflection.Emit if it lacks some functionality you
require.

Kornél

----- Original Message -----
From: "Zac Bowling" <zac at zacbowling.com>
To: <mono-devel-list at lists.ximian.com>; <Mono-list at lists.ximian.com>
Sent: Monday, March 06, 2006 10:53 AM
Subject: [Mono-dev] Silly question (for documentation)


> Hey everyone,
>
> This is a silly question. Does anyone know of a good term or really
> good short name that sums up the difference between a compiler that
> uses reflection.emit like mcs does and one that uses a traditional
> object compile, link, and execute method like DotGnu's or Microsoft's
> C# compilers do?
>
> I'm trying to document some of the big differences between all the
> various compilers and I was wondering if there was something better
> that someone was using. Something better then saying "the compile and
> link method" or "the emit method" maybe? ;-)
>
> (I suck at descriptive adjectives. I think in code an not English.)
>
> --
> Zac Bowling
> http://zacbowling.com/
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>




More information about the Mono-devel-list mailing list