Hello, I have dozens of blas-like assembler procedures. They have been written about 10 years ago and I still use them in both virtualpascal and free pascal programs.
Today I tried new fpc 1.9.8. Output generated from fpc 1.9.8 code seems errorenous. The isolated example given below tries to fill an array of float with contstant value. Gdb (5.3) gives no reasonable support, although for 1.0.10 code it does. program atest; type dvector = array[1..10] of double; const dflsize = sizeof(double); var x: dvector; i: integer; a: double; {$ifdef VirtualPascal} {$SAVES EBX,ESI,EDI} {$USES EAX,ECX,EDX} {$endif} procedure vecfill(const dim0,dim1: integer; var r: dVector; c: extended); assembler; asm MOV EAX,dim1; SUB EAX,dim0; MOV EDX,dflsize MUL EDX FLD TByte ptr [c] push eax mov eax,dim0 dec eax mov edx,dflsize mul edx MOV EDX, r ADD EDX,EAX pop eax JMP @@2 @@1: FST QWord ptr [EDX + EAX] SUB EAX,dflsize @@2: CMP EAX,0 JGE @@1 FSTP ST(0) end; {asmvecfill} begin a := 123.45; fillchar(x, sizeof(x),0); vecfill(2, 5, x, a); for i := 1 to 6 do writeln(x[i]); end. Here is output by fpc 1.9.8: 0.000000000000000E+000 0.000000000000000E+000 0.000000000000000E+000 0.000000000000000E+000 (or access violation when arrays allocated dynamically). Output by fpc 1.0.10 and vp 2.1 which is one I expect: 1.234500000000000E+002 1.234500000000000E+002 1.234500000000000E+002 1.234500000000000E+002 Any ideas? Jan Jelowicki [EMAIL PROTECTED] ------------------------------------------------------------------- Wroclaw University of Agriculture Akademia Rolnicza we Wroclawiu Department of Mathematics Katedra Matematyki ------------------------------------------------------------------- _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal