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