Question about the rtl source - I see a lot of procedures/functions that have assembly versions and pascal versions. When is the pure pascal version used and when is the assembly version used? I notice most of the assembly is x86 only, so I guess that at least x64 and the mobile compilers use the pascal versions, but does x86 use the assembly versions?

Question about the  rtl source - I see a lot of procedures/functions that have assembly versions and pascal versions. When is the pure pascal version used and when is the assembly version used? I notice most of the assembly is x86 only, so I guess that at least x64 and the mobile compilers use the pascal versions, but does x86 use the assembly versions?

It's not clear from reading the source whether the assembly versions are used at all these days (likewise, the code is still full of ifdefs for .net support)

Comments

  1. The assy code is mostly VCL/Win32 AFAIK.

    ReplyDelete
  2. {$IFDEF CPUX64}
      {$DEFINE PUREPASCAL}
    {$ENDIF CPUX64}

    {$IFDEF CPUARM}
      {$DEFINE PUREPASCAL}
    {$ENDIF CPUARM}

    So it seems that Asm versions are used in Win32 and OSX32

    ReplyDelete
  3. Geeze, how did I miss that! Need more coffee!

    ReplyDelete
  4. The pure pascal versions may also be used when the RTL devs are developing and testing because they may well compile in pure pascal mode for ease of debugging.

    ReplyDelete

Post a Comment