![]() | |||||||||||||
Messages in this thread |
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 | |||||||||||||