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.