On Feb 13, 2008 1:52 PM, Michael Matz <[EMAIL PROTECTED]> wrote: > Hi, > > On Wed, 13 Feb 2008, H.J. Lu wrote: > > > We need a callee-saved register for stack alignment. > > Can you expand on why?
Our proposal is at http://gcc.gnu.org/ml/gcc/2007-12/msg00567.html For most cases, we can align stack with RBP/RSP. But we need an extra register when there is dynamic stack allocation or nested functions. It has to be callee-saved to work with setjmp/longjmp. > > > In 64bit, our choices are rbx, and r12-r15. r12-r15 need the REX byte > > and r12 also needs the SIB byte. So I'd like to use rbx. x86-64 psABI > > says rbx is callee-saved and optionally used as base pointer. However, I > > couldn't find an example where rbx is used as base pointer. Is this a > > carryover from i386 psABI where ebx is used to hold GOT? > > In the large memory model you need a base pointer for the GOT. Of course > we could do the same as in recent i386 and chose an arbitrary register as > GOT pointer. I will use rbx then. Thanks. H.J.