[fpc-pascal]Default calling convention

Marco van de Voort marcov at stack.nl
Mon Jun 28 09:29:07 CEST 2004

> >
> > I noticed that, with FPC 1.9.4, the (default) calling convention
> > "register" depends on the fact that a routine is or is not embedded
> > in an other routine.
> >
> > With "proc(A,B,C: Longint);", if "proc" is not embedded then
> > eax = A, edx = B and ecx = C but if "proc" is embedded then edx = A,
> > ecx = B and C is on the stack.
> >
> > Is this convention definitive or temporary? I am not sure it is
> > definitive since it makes the code of assembler routines dependent
> > on their status: embedded or not.
> The framepointer of the parent function is passed in EAX

In general it is not wise anyway to let the assembler become to dependant
on calling convention.

Keep on using

 mov eax,param1
 mov ecx,param2

etc. Clearer, and doesn't have the problem between procedure/methods/nested

More information about the fpc-pascal mailing list