This is a collection of ARM assembly self-education projects for Cortex-A based single board computers running various forms of Linux. They all make use of gcc and the associated assembler, and tend to use a C main that calls the assembly routines, as well as unit tests written in C.
Based on a quad-core Arm Cortex-A53 and running the Raspbian 9 (Stretch) operating system.
It is important to understand that, while this is a 64 bit CPU, conforming to the ARMv8-A architecture spec, Raspbian is a 32 bit operating system, making the CPU effectively conform to the ARMv7-A architecture spec. Supports both the ARM and Thumb instruction sets.
The Rockip RK3399-based ROCKPro64 running Armbian Bionic. This is a rather odd big.LITTLE configuration with two Cortex-A72 and four Cortex-A53 cores as well as a Neon co-processor.
Features from `/proc/cpuinfo'
fp asimd evtstrm aes pmull sha1 sha2 crc32
Example | Location |
---|---|
Ring Buffer | ring-buffer |
Vector Addition with NEON instructions | neon |
A Guide to ARM64 / AArch64 Assembly on Linux with Shellcodes and Cryptography