[Ffmpeg-devel] stdint.h and inttypes.h for non-C99 compilers
Christian Iversen
chrivers
Fri Dec 15 04:11:52 CET 2006
On 15. December 2006 04:02, M?ns Rullg?rd wrote:
> Christian Iversen <chrivers at iversen-net.dk> writes:
> > On Wednesday 13 December 2006 12:56, M?ns Rullg?rd wrote:
> >> Alexander Chemeris said:
> >> > Why do you change this?
> >> > Is __cdecl is not enough?
> >>
> >> You're both wrong. The __cdecl modifier tells the compiler to use the
> >> standard C calling convention (the alternative being __stdcall for
> >> Pascal calling convention).
> >
> > Just FYI, __stdcall is usually _not_ used in pascal. The calling
> > conventions that sane pascal compilers call "pascal" is a
> > register-based convention, that is much more efficient. The
> > corresponding pascal function attribute is "stdcall;"
>
> How do these Pascal compilers pass more arguments than will fit in
> registers? Who is responsible for restoring the stack, caller or
> callee?
Extra arguments are passed on the stack as with stdcall, but since this
removed up to 3 arguments from the stack, it's a much better convention. (we
are talking x86 here, of course)
The stack is callee-cleared, and thus "register" is very much like (perhaps
identical to) Borland C++'s "__fastcall" modifier:
http://en.wikipedia.org/wiki/X86_calling_conventions
--
Mvh
Christian Iversen
More information about the ffmpeg-devel
mailing list