Marcel Martin wrote:

Florian Klaempfl a écrit :

Thomas Schatzl wrote:

In this case

 procedure nx_fill(P: PLongword; Count: Longint; Value: Longword);
 assembler;
 asm
         pushl   %edi
         movl    P,%edi  // edi <- P
         movl    Value,%eax  // eax <- Value
         movl    Count,%ecx  // ecx <- Count
         rep
         stosl
         popl    %edi
 end;

works both as embedded and non-embedded assembler procedure because the
order of assignments is ok in both cases.

Btw, there's already a method in the system unit which does the same
thing as your routine: filldword()...

... and with better instruction selection ;)


1) This little routine was sent to point out a problem.

2) Better than what? Where do you see an "instruction selection"

Push instead of mov. mov is faster on modern machines because it causes less instruction dependencies.


in my procedure. There is none. And there is none because this is useless. 'nx_fill' is in a unit called 'nxkernel', this unit contains all the low level routines for the library, and with these routines, it is up to the calling procedures to check the validity of the transmitted parameters. This is as simple as that.



_______________________________________________
fpc-pascal maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to