Oh, all right. :) Thank you very much once again! 2011/6/27 Alex <[email protected]>
> Hi, > > Just a fancy ECMA 335 abbreviation for Virtual Execution System (i.e. > the runtime). :) > > Regards, > Alex > > On Mon, Jun 27, 2011 at 6:56 PM, Gábor Kozár <[email protected]> wrote: > > Thank you very much Alex, you've been a great deal of help! > > > > Just a final stupid question: what is VES? > > 2011/6/27 Alex <[email protected]> > >> > >> Hi, > >> > >> >So char, the integer types and bool are all interchangable? > >> > >> Technically, yes. The CLR treats bools and chars as 32-bit integers > >> (even if a char really is only 16 bits and a bool 8 bits). > >> > >> >How about the 'ceq' instruction? Does it only work on the types above > >> > (lets call them 'numeric types'), or does it have some magic way of > >> > comparing other types? > >> > >> All such instructions only operate on primitive types that the VES > >> knows how to compare. Object.Equals(), IEquatable<T>, etc are all > >> independent of CIL and must be called manually. > >> > >> Regards, > >> Alex > >> > >> On Mon, Jun 27, 2011 at 4:17 PM, Gábor Kozár <[email protected]> > wrote: > >> > So char, the integer types and bool are all interchangable? > >> > How about the 'ceq' instruction? Does it only work on the types above > >> > (lets > >> > call them 'numeric types'), or does it have some magic way of > comparing > >> > other types? > >> > Thanks for the book recommendation, I have ordered it! :) > >> > 2011/6/26 Alex <[email protected]> > >> >> > >> >> Hello, > >> >> > >> >> >So apparently, the int32 value of '1' is bool 'true' as far as CIL > is > >> >> > concerned. So what are the rules here? Are there any other such > >> >> > 'implicit > >> >> > conversions' I should be aware of? > >> >> > >> >> The only other case I can think of is 'char'. > >> >> > >> >> >Another thing that's not quite clear for me are the 'add', 'div', > >> >> > 'rem', > >> >> > 'clt' etc. instructions, specifically, the values they use. Do they > >> >> > work > >> >> > only on Int32? What happens if they get Int16 or Int64? > >> >> > >> >> In CIL, types are not encoded in instructions, but rather in local > >> >> variables, parameters, fields, etc. So, the instructions you mention > >> >> operate on both integers and floats (don't misunderstand; they're > >> >> still type-safe). > >> >> > >> >> >Is there a site or a tutorial or a book, or whatever that can teach > me > >> >> > CIL? I did some searches, but only found some very basic examples - > >> >> > nothing > >> >> > too useful. > >> >> > >> >> I would recommend Expert .NET 2.0 IL Assembler and generally ECMA 335 > >> >> Partition II and III. > >> >> > >> >> Regards, > >> >> Alex > >> >> > >> >> On Sun, Jun 26, 2011 at 5:19 PM, Gábor Kozár <[email protected]> > >> >> wrote: > >> >> > Hey, > >> >> > > >> >> > I'm writing a stack analyzer using Mono.Cecil: ideally it should be > >> >> > able > >> >> > to > >> >> > tell me what is on the evaluation stack at the given instruction of > a > >> >> > method > >> >> > body. > >> >> > For this, I need to be able to tell the type of the values pushed > to > >> >> > / > >> >> > pulled from the evaluation stack by the instructions. > >> >> > This is mostly fine, however, there are some things around the > native > >> >> > CIL > >> >> > types that are confusing. > >> >> > For example, when I write this in C#: > >> >> > return true; > >> >> > this is the CIL emitted: > >> >> > ldc.i4.1 > >> >> > ret > >> >> > So apparently, the int32 value of '1' is bool 'true' as far as CIL > is > >> >> > concerned. So what are the rules here? Are there any other such > >> >> > 'implicit > >> >> > conversions' I should be aware of? > >> >> > Another thing that's not quite clear for me are the 'add', 'div', > >> >> > 'rem', > >> >> > 'clt' etc. instructions, specifically, the values they use. Do they > >> >> > work > >> >> > only on Int32? What happens if they get Int16 or Int64? > >> >> > Is there a site or a tutorial or a book, or whatever that can teach > >> >> > me > >> >> > CIL? > >> >> > I did some searches, but only found some very basic examples - > >> >> > nothing > >> >> > too > >> >> > useful. > >> >> > Thank you very much! > >> >> > > >> >> > -- > >> >> > -- > >> >> > mono-cecil > >> >> > >> >> -- > >> >> -- > >> >> mono-cecil > >> > > >> > -- > >> > -- > >> > mono-cecil > >> > >> -- > >> -- > >> mono-cecil > > > > -- > > -- > > mono-cecil > > -- > -- > mono-cecil -- -- mono-cecil
