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.

Reply via email to