Download Using as

Transcript
Chapter 8: Machine Dependent Features
73
file, and it must be declared to either not use $27 or perform a standard GP
load in the first two instructions via the .prologue directive.
!tlsgd
!tlsgd!N
Used with an lda instruction to load the address of a TLS descriptor for a
symbol in the GOT.
The sequence number N is optional, and if present it used to pair the descriptor
load with both the literal loading the address of the __tls_get_addr function
and the lituse_tlsgd marking the call to that function.
For proper relaxation, both the tlsgd, literal and lituse relocations must
be in the same extended basic block. That is, the relocation with the lowest
address must be executed first at runtime.
!tlsldm
!tlsldm!N
Used with an lda instruction to load the address of a TLS descriptor for the
current module in the GOT.
Similar in other respects to tlsgd.
!gotdtprel
Used with an ldq instruction to load the offset of the TLS symbol within its
module’s thread-local storage block. Also known as the dynamic thread pointer
offset or dtp-relative offset.
!dtprelhi
!dtprello
!dtprel
Like gprel relocations except they compute dtp-relative offsets.
!gottprel
Used with an ldq instruction to load the offset of the TLS symbol from the
thread pointer. Also known as the tp-relative offset.
!tprelhi
!tprello
!tprel
Like gprel relocations except they compute tp-relative offsets.
8.102.9 Floating Point
The Alpha family uses both ieee and VAX floating-point numbers.
8.102.10 Alpha Assembler Directives
as for the Alpha supports many additional directives for compatibility with the native
assembler. This section describes them only briefly.
These are the additional directives in as for the Alpha:
.arch cpu
Specifies the target processor. This is equivalent to the ‘-mcpu ’ command-line
option. See Section 8.102.7 [Alpha Options], page 70, for a list of values for
cpu.