From WikiChip
Difference between revisions of "arm/aarch64"
Line 4: | Line 4: | ||
== Overview == | == Overview == | ||
The AArch64 execution state was introduced with the {{\\|ARMv8}} ISA for machines executing {{\\|A64}} instructions. A machine in AArch64 can only execute A64 instructions and cannot execute {{\\|A32}} or {{\\|T32}} instructions. However, unlike in {{\\|AArch32}}, in the 64-bit state, instructions can access both the 64-bit and 32-bit registers. | The AArch64 execution state was introduced with the {{\\|ARMv8}} ISA for machines executing {{\\|A64}} instructions. A machine in AArch64 can only execute A64 instructions and cannot execute {{\\|A32}} or {{\\|T32}} instructions. However, unlike in {{\\|AArch32}}, in the 64-bit state, instructions can access both the 64-bit and 32-bit registers. | ||
+ | |||
+ | == Calling convention == | ||
+ | {{see also|calling convention}} | ||
+ | Under AArch64, the first eight registers are used for passing parameters into a subroutine as well as to return a result value set. Generally, X0 through X18 can corrupt while X19-X29 must be preserved. | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Register !! Role !! Requirement | ||
+ | |- | ||
+ | | X0 - X7 || Parameter/result registers || rowspan="5" | Can Corrupt | ||
+ | |- | ||
+ | | X8 || Indirect result location register | ||
+ | |- | ||
+ | | X9 - X15 || Temporary registers | ||
+ | |- | ||
+ | | X16 - X17 || Intra-procedure call temporary | ||
+ | |- | ||
+ | | X18 || Platform register, otherwise temporary | ||
+ | |- | ||
+ | | X19 - X29 || Callee-saved register || Must preserve | ||
+ | |- | ||
+ | | X30 || Link Register || Can Corrupt | ||
+ | |} | ||
{{stub}} | {{stub}} |
Revision as of 15:48, 20 September 2018
ARM ISA | |
General | |
Variants | |
Extensions | |
Topics | |
Versions(all) | |
AArch64 is the 64-bit execution state of the ARMv8 ISA. A machine in this state executes operates on the A64 instruction set. This is in contrast to the AArch32 which describes the classical 32-bit ARM execution state.
Overview
The AArch64 execution state was introduced with the ARMv8 ISA for machines executing A64 instructions. A machine in AArch64 can only execute A64 instructions and cannot execute A32 or T32 instructions. However, unlike in AArch32, in the 64-bit state, instructions can access both the 64-bit and 32-bit registers.
Calling convention
- See also: calling convention
Under AArch64, the first eight registers are used for passing parameters into a subroutine as well as to return a result value set. Generally, X0 through X18 can corrupt while X19-X29 must be preserved.
Register | Role | Requirement |
---|---|---|
X0 - X7 | Parameter/result registers | Can Corrupt |
X8 | Indirect result location register | |
X9 - X15 | Temporary registers | |
X16 - X17 | Intra-procedure call temporary | |
X18 | Platform register, otherwise temporary | |
X19 - X29 | Callee-saved register | Must preserve |
X30 | Link Register | Can Corrupt |
![]() |
This article is still a stub and needs your attention. You can help improve this article by editing this page and adding the missing information. |