Re: [OT] caller-save/callee-save register styles

From: Mikael Pettersson
Date: Mon Sep 08 2003 - 04:36:50 EST


On Sun, 7 Sep 2003 23:54:59 +0530 (IST), Nagendra Singh Tomar wrote:
>I would like to know various people's experiences about the caller-save
>and callee-save style of preserving register values across procedure
>calls. I feel that the ABI specification should specify that but I was
>unable to figure that out in the ELF-ABI specification.
>What I have personally seen is only callee-save style in which the
>modified registers are PUSHed on the stack on entering the function and
>POPed on leaving the function. That means the caller can assume that all
>the regsiter values will be same just before and after the 'call'
>instruction.

"All" is a bad assumption. Most ABIs have both caller-save and
callee-save registers, so you need to save those caller-save
registers that are to be live over the call.

>Can we assume one of these styles when writing assembly code that has to
>be linked with C code generated by the compiler or do we have to first
>ensure the style that the compiler follows and then use that.
>Comments on how other ABIs do it are highly welcome, though I am
>particularly interested about the ELF-ABI and x86 arch.

Neither the ELF spec nor the generic SVR4 ABI documents these things.
You need the Processor-Specific Supplement, a.k.a. psABI.

There is no central repository for these, but last time I checked,
the ia32 psABI was downloadable from SCO or Caldera.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/