side effects of the compiler-generated calls
Tobias Schlüter
Tobias.Schlueter@physik.uni-muenchen.de
Wed Jul 18 13:56:00 GMT 2007
David Livshin wrote:
> Actually I hoped that as routines from the fortran library, they might have
> "simplified" calling convention, e.g. affect less ( then normal calls )
> resources ( registers ). As to the stack pointer, analyzing the compiler
> generated code, I didn't see any cases of stack-adjustment after the calls to
> these routines - the question is if I may assume it to be a rule; for what
> routines is it a rule?
libgfortran is (for the most part) implemented in C, so it uses the C
ABI. I had a quick look through the code to verify that no attributes
which may affect calling conventions are set. I don't think you may
assume anything beyond that.
From the description of your software it looks like you're the assembly
expert, so I may be wrong here, but I assume that you don't see stack
adjustments because as long as the compiler doesn't get confused, it
doesn't have to re-adjust the stack. So instead of doing
push arg
push arg
call f
add %esp, ...
push arg
call g
add %esp, ...
it can omit the first add, using a larger offset in the second add (or
sub, if I misremembered the stack growth direction).
- Tobi
More information about the Fortran
mailing list