lkml.org 
[lkml]   [2003]   [Sep]   [8]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateMon, 8 Sep 2003 11:33:33 +0200 (MEST)
FromMikael Pettersson <>
SubjectRe: [OT] caller-save/callee-save register styles
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@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:48    [from the cache]
©2003-2008