Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can i use the same ARM assembly for different ARM processors (Cortex,Tegra and so on)?

I'm interested if ARM assembly common for all types of ARM's? For example if I write some function in ARM assembly will it works the same on Cortex, Nvidia Tegra, Qualcomm etc? Can I use the same instruction set or SIMD engines or NEON on different ARM processors (like in x86-64 assembly)?

like image 686
Oleksandr Karaberov Avatar asked Feb 19 '23 16:02

Oleksandr Karaberov


1 Answers

You list Cortex, Nvidia Tegra, and Qualcomm in one sentence which is sort of mixing concepts - Cortex is the name of the CPU core family developed by ARM, while Tegra names a system-on-chip using ARM CPU, e.g. Tegra 2/3 chips use Cortex-A9 cores.

What's important for you is the instruction set supported by each of the target chips, which in turn depends on ARM core used. This overview of existing ARM cores can be a good starting point. Also, this diagram from ARM's page gives a great, quick overview.

Another good document to check is ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition (you need to register for a free account to access it).

As of NEON, according to ARM web page, Cortex-A7, Cortex-A8 and Cortex-A15 cores are equipped with NEON by default, while for Cortex-A5 and Cortex-A9 it's optional feature (i.e. chip manufacturer decides about including it). Again, you have to consult the chip's datasheet in this case to check if NEON is supported.

like image 176
Code Painters Avatar answered Feb 21 '23 04:02

Code Painters