This white paper is an introduction to porting existing code to the A64 instruction set supported by Armv8-A processors like the Cortex-A53 and Cortex-A57 from Arm. It will also be useful for those writing new code for these platforms.
It seems that is a question with many answers! For some, it will be the need to address more than 4GB of memory, for others the need for wider registers and greater accuracy of 64-bit data processing, for still others the attraction of a larger register set.
Whatever your reason for looking to move to 64-bit, it is likely that you will have a body of legacy software which will need porting as well as new code which needs writing. This paper is designed to help with both processes.
We’ll start with a quick look at the evolution of the Arm architecture which has brought 64-bit to reality.
[CTAToken URL = "https://developer.arm.com/-/media/Files/pdf/Porting%20to%20ARM%2064-bit%20v4.pdf" target="_blank" text="Download whitepaper" class ="green"]
I wonder if the section about the various options like ilp32 llp64 shouldn't be expanded a bit to be clearer about peoples options depending on where they are coming from and what they'll be running on. Plus it could mention big-endian options.
For instance ilp32 could be useful for straight porting for speed but needs the appropriate libraries. The system structures in include files may not be identical to the ones for A32. Will user structures be exactly the same?
ilp64 will not be supported at all
Some machines may operate in big-endian mode e.g. when porting from MIPS or PowerPC. Support for one endian mode is very unlikely to be provided on the other except through virtualization.
Apple do their own thing and reserve an extra register but otherwise support only ilp64 in 64 bit mode.