This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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: [PATCH] x86: fix handling of %eip/%rip


On Tue, Sep 25, 2007 at 05:04:37PM +0100, Jan Beulich wrote:
> Along with allowing (the admittedly somewhat odd, but possible) %eip-
> relative addressing to be encoded just like other 32-bit addressing
> modes, this also fixes the problem of the identifier 'rip' not having
> been available for programmer use in Intel-syntax 32-bit code.
> 
> Built and tested on x86_64-unknown-linux-gnu.
> 
> gas/
> 2007-09-25  Jan Beulich  <jbeulich@novell.com>
> 
> 	* config/tc-i386.c (build_modrm_byte): Also check for RegEip
> 	when considering IP-relative addressing.
> 
> gas/testsuite/
> 2007-09-25  Jan Beulich  <jbeulich@novell.com>
> 
> 	* gas/i386/reloc64.s: Adjust for %eip-relative addressing no
> 	longer generating errors.
> 	* gas/i386/reloc64.d, gas/i386/reloc64.l: Update.
> 	* gas/i386/x86-64-addr32.s: Remove explicit addr32 prefix
> 	for %eip-realtive addressing case.
> 
> opcodes/
> 2007-09-25  Jan Beulich  <jbeulich@novell.com>
> 
> 	* i386-opc.h (RegEip): Define.
> 	(RegEiz): Adjust.
> 	* i386-reg.tbl: Add eip. Mark rip and eip with RegRex64.
> 	* i386-tbl.h: Re-generate.

It looks good. I only have one question.

> --- 2007-09-25/opcodes/i386-reg.tbl	2007-09-25 16:27:55.000000000 +0200
> +++ 2007-09-25/opcodes/i386-reg.tbl	2007-09-25 17:19:30.000000000 +0200
> @@ -187,9 +187,10 @@ xmm12, RegXMM, RegRex, 4
>  xmm13, RegXMM, RegRex, 5
>  xmm14, RegXMM, RegRex, 6
>  xmm15, RegXMM, RegRex, 7
> -// No type will make this register rejected for all purposes except
> -// for addressing.  This saves creating one extra type for RIP.
> -rip, BaseIndex, 0, RegRip
> +// No type will make these registers rejected for all purposes except
> +// for addressing.  This saves creating one extra type for RIP/EIP.
> +rip, BaseIndex, RegRex64, RegRip
> +eip, BaseIndex, RegRex64, RegEip

Why is RegRex64 needed?

Thanks.


H.J.


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