Difference between revisions of "Language related articles"

From Lazarus wiki
Jump to navigationJump to search
(No difference)

Revision as of 14:47, 26 December 2003

Things FPC 1.9.x currently doesn't support

  • The "implements" style delegation.
  • dispinterface
  • Slice(dyn array) seems to have problems.
  • Reintroduce


New in 1.9.x (not yet in the docs)

  • {$fputype xxx) to select a certain fpu style or -Cfxxx on command line/cfg file
    • all: soft (not yet implemented)
    • i386: x87, sse, sse2
      • code compiled with sse uses the sse to do calculations with the single data type. This code runs only on

Pentium III and above and AthlonXP and above

      • code compiled with sse uses the sse unit to do calculations with the single and double data type. This code runs only on

PentiumIV and above and Athlon64 and above To determine the supported instruction set, use the is_sse_cpu and is_sse2_cpu of the mmx unit. Because the sse code is usually faster than x87-fpu code, it's recommended to use these switches for heavy floating point calculations. If you want an application which runs on all fpu architectures, a possible solution is to put the code into an include file and include this file twice into your program: once compiled with e.g. -Cfsse2 and once without. Use the e.g. is_sse2_cpu variable to select the appropriate code:

 {$fputype x87}
 procedure calc_x87;
 {$i mymathcode.inc}
 {$fputype sse2}
 procedure calc_sse2;
 {$i mymathcode.inc}
 begin 
   if is_sse2_cpu then
     calc_sse2
   else
     calc_x87;
 end;
    • x86-64: sse64
    • powerpc: standard
    • arm: libgcc, fpa, fpa10, fpa11, vfp