This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [discuss] When is RBX used for base pointer?


On Feb 13, 2008 1:52 PM, Michael Matz <matz@suse.de> 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]