[Mono-dev] x86 code generator

Rusmin Susanto rusminsusanto at yahoo.com
Sun Jul 2 20:53:14 EDT 2006

  In file x86-codegen.h there are a lot of macros for x86 code generation. I am surprised that I don't see x86 assembly code here.
  Here are some of my questions:
  1. How do you know that floating point addition equal to :
   x86_fp_op_reg (code, X86_FADD, 1, TRUE);
     which is equal to:
   do { \
  static const unsigned char map[] = { 0, 1, 2, 3, 5, 4, 7, 6, 8}; \
  *(inst)++ = (pop_stack) ? (unsigned char)0xde : (unsigned char)0xdc; \
  *(inst)++ = (unsigned char)0xc0+(map[(opc)]<<3)+((index)&0x07); \ 
 } while (0)
   Where do you get the reference for this?
  2. How do you know that "sin" function is equal to the following instructions in x86:
   x86_fsin (code);
 x86_fldz (code);
 x86_fp_op_reg (code, X86_FADD, 1, TRUE);
   I can't find reference about this. Where do you get this reference?
  3. Why do you write everything in
     do .. while(0)   pattern?
     while(0) will always fail (I think). So there is no loop
  In short, I want to know where you get all these information because I can't find them in assembly reference/guide that I have.
  Is any good reference that explains all of these?
  Many thanks for your attention

Do you Yahoo!?
 Next-gen email? Have it all with the  all-new Yahoo! Mail Beta.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20060702/5e50aed9/attachment.html 

More information about the Mono-devel-list mailing list