Next: , Previous: AArch64 Floating Point, Up: AArch64-Dependent


9.1.5 AArch64 Machine Directives

.arch name
Select the target architecture. Valid values for name are the same as for the -march command-line option.

Specifying .arch clears any previously selected architecture extensions.


.arch_extension name
Add or remove an architecture extension to the target architecture. Valid values for name are the same as those accepted as architectural extensions by the -mcpu command-line option.

.arch_extension may be used multiple times to add or remove extensions incrementally to the architecture being compiled for.


.bss
This directive switches to the .bss section.


.cpu name
Set the target processor. Valid values for name are the same as those accepted by the -mcpu= command-line option.


.dword expressions
The .dword directive produces 64 bit values.


.even
The .even directive aligns the output on the next even byte boundary.


.float16 value [,...,value_n]
Place the half precision floating point representation of one or more floating-point values into the current section. The format used to encode the floating point values is always the IEEE 754-2008 half precision floating point format.


.inst expressions
Inserts the expressions into the output as if they were instructions, rather than data.


.ltorg
This directive causes the current contents of the literal pool to be dumped into the current section (which is assumed to be the .text section) at the current location (aligned to a word boundary). GAS maintains a separate literal pool for each section and each sub-section. The .ltorg directive will only affect the literal pool of the current section and sub-section. At the end of assembly all remaining, un-empty literal pools will automatically be dumped.

Note - older versions of GAS would dump the current literal pool any time a section change occurred. This is no longer done, since it prevents accurate control of the placement of literal pools.


.pool
This is a synonym for .ltorg.


name .req register name
This creates an alias for register name called name. For example:
                  foo .req w0

ip0, ip1, lr and fp are automatically defined to alias to X16, X17, X30 and X29 respectively.


.tlsdescadd
Emits a TLSDESC_ADD reloc on the next instruction.


.tlsdesccall
Emits a TLSDESC_CALL reloc on the next instruction.


.tlsdescldr
Emits a TLSDESC_LDR reloc on the next instruction.


.unreq alias-name
This undefines a register alias which was previously defined using the req directive. For example:
                  foo .req w0
                  .unreq foo

An error occurs if the name is undefined. Note - this pseudo op can be used to delete builtin in register name aliases (eg 'w0'). This should only be done if it is really necessary.


.variant_pcs symbol
This directive marks symbol referencing a function that may follow a variant procedure call standard with different register usage convention from the base procedure call standard.


.xword expressions
The .xword directive produces 64 bit values. This is the same as the .dword directive.


.cfi_b_key_frame
The .cfi_b_key_frame directive inserts a 'B' character into the CIE corresponding to the current frame's FDE, meaning that its return address has been signed with the B-key. If two frames are signed with differing keys then they will not share the same CIE. This information is intended to be used by the stack unwinder in order to properly authenticate return addresses.