* [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as
@ 2002-01-29 16:34 HARISH J PRABHU
2002-01-30 22:20 ` Jim Wilson
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: HARISH J PRABHU @ 2002-01-29 16:34 UTC (permalink / raw)
To: linux-ia64
Hello
Does the ia64-hp-linux-as assembler which comes with the
Ski/NUE support all pseudo-ops as done by the
Intel Assembler IAS , [ as given in the Assembler Users Guide]
?
The Guide is unclear about what the ld8.mov instruction
does. Can somebody explain this to me ?
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as
2002-01-29 16:34 [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as HARISH J PRABHU
@ 2002-01-30 22:20 ` Jim Wilson
2002-01-31 6:12 ` Christian Hildner
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Jim Wilson @ 2002-01-30 22:20 UTC (permalink / raw)
To: linux-ia64
> Does the ia64-hp-linux-as assembler which comes with the
> Ski/NUE support all pseudo-ops as done by the
> Intel Assembler IAS , [ as given in the Assembler Users Guide]
> ?
GNU as follows the assembler and architecture documentation. There are
some differences in syntax from IAS because IAS doesn't always follow the
documentation. No one has really tried to figure out whether IAS or the
docs are wrong, we just follow the docs. There are only a couple of
minor differences though which are easy to work around.
GNU as supports all of the pseudo-ops, and most of the directives. I don't
know of anyone who has tried to verify this, so there could be some obscure
ones missing. Some of the optional directives are deliberately not
immplemented. These are mostly the directives for performing register
allocation in the assembler. GNU as doesn't do register allocation, nor
do we think it should. Also, .org is not implemented since GNU ld can't
support it.
> The Guide is unclear about what the ld8.mov instruction
> does. Can somebody explain this to me ?
There is ld8.mov instruction. Perhaps you mean ld8.fill? See the Software
Developers Manual, which explains what every instruction does. See also
the explanation of the register stack engine and NaT bits, which us what
ld8.fill is used for.
Jim
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as
2002-01-29 16:34 [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as HARISH J PRABHU
2002-01-30 22:20 ` Jim Wilson
@ 2002-01-31 6:12 ` Christian Hildner
2002-01-31 17:14 ` Refah, Azita
2002-02-05 21:13 ` Jim Wilson
3 siblings, 0 replies; 5+ messages in thread
From: Christian Hildner @ 2002-01-31 6:12 UTC (permalink / raw)
To: linux-ia64
>
Harish,
for reference use IA-64 Software Developer's Manual Vol. 3 Intel-No. 245319-002 (also as pdf).
But I didn't find ld8.mov. Do you want to load a register from storage or do you want to move
from one register to another?
Christian
>
> Hello
> Does the ia64-hp-linux-as assembler which comes with the
> Ski/NUE support all pseudo-ops as done by the
> Intel Assembler IAS , [ as given in the Assembler Users Guide]
> ?
> The Guide is unclear about what the ld8.mov instruction
> does. Can somebody explain this to me ?
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as
2002-01-29 16:34 [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as HARISH J PRABHU
2002-01-30 22:20 ` Jim Wilson
2002-01-31 6:12 ` Christian Hildner
@ 2002-01-31 17:14 ` Refah, Azita
2002-02-05 21:13 ` Jim Wilson
3 siblings, 0 replies; 5+ messages in thread
From: Refah, Azita @ 2002-01-31 17:14 UTC (permalink / raw)
To: linux-ia64
The following explanation is from the developer of IAS:
--------------
The ld8.mov and the ltoff22x linker operator are the way to implement link
time optimization.
The problem:
To get the address of a symbol it takes 3 cycles for an arbitrary symbol and
1 cycle for a symbol in the short section (close to the GP). But if we
define all the symbols in the short section we may overflow the short
section and it will fail in link time.
The solution:
Mark certain symbols as potential for placement in the short section and the
linker will decide if there is enough space there.
The regular code:
addl r15 = @ltoff(SYM), gp ;;
ld8 r16 = [r15] <== r16 holds the address of SYM
The optimized code:
addl r16 = @gprel(SYM), gp <== r16 holds the address of SYM
The code with ld8.mov and ltoff22X:
addl r15 = @ltoffx(SYM), gp ;;
ld8.mov r16 = [r15] <== r16 holds the address of SYM
In the case that the linker decide to place SYM in the short section the
ltoff will actually be gprel and the ld8 will be converted to mov. If the
linker decide not to place SYM in the short section it becomes that same as
the regular case.
Note: that the two must come together and the need for linker support. As
far as I know GNU linker does not support this.
-----Original Message-----
From: Christian Hildner [mailto:christian.hildner@hob.de]
Sent: Wed, January 30, 2002 10:12 PM
To: linux-ia64@linuxia64.org; harish_prabhu@mobmit.com
Subject: Re: [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as
>
Harish,
for reference use IA-64 Software Developer's Manual Vol. 3 Intel-No.
245319-002 (also as pdf).
But I didn't find ld8.mov. Do you want to load a register from storage or do
you want to move
from one register to another?
Christian
>
> Hello
> Does the ia64-hp-linux-as assembler which comes with the
> Ski/NUE support all pseudo-ops as done by the
> Intel Assembler IAS , [ as given in the Assembler Users Guide]
> ?
> The Guide is unclear about what the ld8.mov instruction
> does. Can somebody explain this to me ?
_______________________________________________
Linux-IA64 mailing list
Linux-IA64@linuxia64.org
http://lists.linuxia64.org/lists/listinfo/linux-ia64
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as
2002-01-29 16:34 [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as HARISH J PRABHU
` (2 preceding siblings ...)
2002-01-31 17:14 ` Refah, Azita
@ 2002-02-05 21:13 ` Jim Wilson
3 siblings, 0 replies; 5+ messages in thread
From: Jim Wilson @ 2002-02-05 21:13 UTC (permalink / raw)
To: linux-ia64
>The following explanation is from the developer of IAS:
Thanks for the explanation. It has been obvious to me for almost 3 years
that there was a problem with managing the size of the short data section,
and it is good to see that Intel has defined a solution for this.
>Note: that the two must come together and the need for linker support. As
>far as I know GNU linker does not support this.
Because the GNU hackers didn't know about the feature until now. ld8.mov isn't
mentioned in my copy of the Assembler Reference Guide. I see that there is a
new version of it on the Intel web site, but in order to figure that out,
I had to download it first. It would be nice if these documents had version
numbers, so I can more easily tell when new versions are available. Also,
the lack of change bars and a document history chapter means I have to
compare the new doc against the old doc by hand to find what is new. That
is enough of a hassle that I rarely bother to do it.
Jim
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2002-02-05 21:13 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-01-29 16:34 [Linux-ia64] Pseudo-ops: IAS versus ia64-hp-linux-as HARISH J PRABHU
2002-01-30 22:20 ` Jim Wilson
2002-01-31 6:12 ` Christian Hildner
2002-01-31 17:14 ` Refah, Azita
2002-02-05 21:13 ` Jim Wilson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox