Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:multiasm:paarm [2025/12/02 22:05] eriks.klavinsen:multiasm:paarm [2026/01/09 19:03] (current) pczekalski
Line 1: Line 1:
 ====== Programming in Assembler for Mobiles and ARM ====== ====== Programming in Assembler for Mobiles and ARM ======
  
-Now, you may realise that there is more than one assembly language type. The most widely used assembly language types are ARM, MIPS, and x86. New architectures will replace old ones simply because they may have lower power consumption or smaller silicon die sizes. Another push for a new CPU architecture comes from malware that exploits its features to steal users' data. Such malware, such as “Spectre” and “Meltdown”, exploits vulnerabilities in modern CPU designs. Vulnerabilities were built into the CPU as features – speculative execution and branch prediction. So, this means that in the future, there will be new architectures or newer versions of existing ones, along with new malware. 
 Let's take a look at the mobile devices market. Mobile phones, tablets, and other devices are built on ARM processor architecture. For example, take Snapdragon SoC (System-on-Chip) designed by Qualcomm – this chip integrates a CPU based on the ARM architecture. Of course, that chip may have an additional graphics processing unit(GPU) and even a digital signal processor(DSP) for faster signal processing. Similarly, Apple A18 processors are based on ARM architecture. The only difference between all these mobile devices is the ARM version on which the processor is designed. Let's take a look at the mobile devices market. Mobile phones, tablets, and other devices are built on ARM processor architecture. For example, take Snapdragon SoC (System-on-Chip) designed by Qualcomm – this chip integrates a CPU based on the ARM architecture. Of course, that chip may have an additional graphics processing unit(GPU) and even a digital signal processor(DSP) for faster signal processing. Similarly, Apple A18 processors are based on ARM architecture. The only difference between all these mobile devices is the ARM version on which the processor is designed.
  
Line 10: Line 9:
 The ARM processor “world” is huge – only through individual investigation can it be explored and its potential realised. In this book, we will present key ideas for what needs to be investigated in more depth to unlock the exact processor's full potential and features. The primary resource for this book is the ARM official homepage at https://developer.arm.com/documentation, which includes all its resources and documentation. The ARM processor “world” is huge – only through individual investigation can it be explored and its potential realised. In this book, we will present key ideas for what needs to be investigated in more depth to unlock the exact processor's full potential and features. The primary resource for this book is the ARM official homepage at https://developer.arm.com/documentation, which includes all its resources and documentation.
  
-Mobile devices tend to use Cortex-A series processors. As the instruction set is very similar to that of the Cortex series (of course, with minor differences), we will use a Raspberry Pi 5 as a mobile device to learn its architecture. The A64 instruction set will be used in assembly language. The Raspberry Pi 5 uses BCM2712, an ARM Cortex-A76 processor based on the ARMv8.2 architecture. The processor architecture includes many useful features to speed up applications. Currently, the Raspberry Pi 5 has NEON with an integrated floating-point unit, but only half-precision. The architecture has an optional L3 cache, and the BCM2712 on the Raspberry Pi 5 has 2MB of it. All specifics are available in the BCM2712 datasheet. +Mobile devices tend to use Cortex-A series processors. As the instruction set is very similar to that of the Cortex series (with minor differences), we will use a Raspberry Pi 5 as a mobile device to learn about its architecture. The A64 instruction set will be used in assembly language. The Raspberry Pi 5 uses BCM2712, an ARM Cortex-A76 processor based on the ARMv8.2 architecture. The processor architecture includes many useful features to speed up applications. Currently, the Raspberry Pi 5 has NEON with an integrated floating-point unit, but only half-precision. The architecture has an optional L3 cache, and the BCM2712 on the Raspberry Pi 5 has 2MB of it. All specifics are available in the BCM2712 datasheet. 
 Note that ARM typically uses registers to manipulate data. There are no operations that directly manipulate data in memory. All the data must be loaded into the processor's general-purpose registers. All manipulations are performed directly on those registers containing data, and the data can finally be stored back in memory. Note that ARM typically uses registers to manipulate data. There are no operations that directly manipulate data in memory. All the data must be loaded into the processor's general-purpose registers. All manipulations are performed directly on those registers containing data, and the data can finally be stored back in memory.
 +
 +<WRAP excludefrompdf>
 +More information is presented in the following chapters:
 +  * [[en:multiasm:paarm:chapter_5_1]]
 +  * [[en:multiasm:paarm:chapter_5_2]]
 +  * [[en:multiasm:paarm:chapter_5_3]]
 +  * [[en:multiasm:paarm:chapter_5_4]]
 +  * [[en:multiasm:paarm:chapter_5_5]]
 +  * [[en:multiasm:paarm:chapter_5_6]]
 +  * [[en:multiasm:paarm:chapter_5_7]]
 +  * [[en:multiasm:paarm:chapter_5_8]]
 +  * [[en:multiasm:paarm:chapter_5_9]]
 +  * [[en:multiasm:paarm:chapter_5_10]]
 +  * [[en:multiasm:paarm:chapter_5_11]]
 +  * [[en:multiasm:paarm:chapter_5_12]]
 +  * [[en:multiasm:paarm:chapter_5_15]]
 +</WRAP>
  
en/multiasm/paarm.1764705908.txt.gz · Last modified: by eriks.klavins
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0