Syntax differencesbetween UAL and A64 assembly language
UAL is the assembler syntax that is used by the A32 and T32 instruction sets. A64 assembly language is the assembler syntax that is used by the A64 instruction set.
UAL in ARMv8 is unchanged from ARMv7.
The general statement format and operand order of A64 assemblylanguage is the same as UAL, but there are some differences betweenthem. The following table describes themain differences:
Table 6-1 Syntax differences between UAL and A64 assembly language
You make an instruction conditional by appendinga condition code suffix directly to the mnemonic, with no delimiter.For example:
For conditionally executed instructions,you separate the condition code suffix from the mnemonic using a
Apart from the
A64 provides several unconditionallyexecuted instructions that use a condition code as an operand. Forthese instructions, you specify the condition code to test for inthe final operand position. For example:
A64 is a fixed width 32-bit instructionset so does not support
The core register names are R0-R15.
Qualify register names to indicate theoperand data size, either 32-bit (W0-W31) or 64-bit (X0-X31).
You can refer to registers R13, R14,and R15 as synonyms for SP, LR, and PC respectively.
In AArch64, there is no register thatis named W31 or X31. Instead, you can refer to register 31 as SP,WZR, or XZR, depending on the context. You cannot refer to PC eitherby name or number. LR is an alias for register 30.
A32 has no equivalent of the extend operators.
You can specify an extend operator inseveral instructions to control how a portion of the second sourceregister value is sign or zero extended. For example, in the followinginstruction,
ADD X1, X2, W3, UXTB #2