Введение в ассемблер ARM64

Архитектура ARM64

Последнее обновление: 05.08.2023

Сегодня у многих, если не всех, есть смартфон. Одной из особенностей смартфонов является то, что подовляющее большинство из них используют центральный процессор ARM, что делает актуальным изучение подобной архитектуры.

Процессор ARM изначально был разработан в компании Acorn Computers (Великобритания), который, по мысли разработчиков, должен был сменить процессор BBC Microcomputer, который использовался в образовательных целях. Для разработки инженеры Acorn решили использовать технологию RISC (reduced instruction set computer). А само название архитектуры ARM является сокращением от "Advanced RISC Machine".

По сравнению с господствовашей тогда архитектурой CISC (complex instruction set computer), которая применялась в процессорах Intel, архитектура RISC позволяла снизить объем используемого в чипах кремния. Что в итоге вело к удешевлению производства и, кроме того, приводило к уменьшению использования энергии. Это в свою очередь повлияло на то, что компания Apple выбрала ARM-процессор для своего устройства - iPod. И впоследствии большинство смартфонов и планшетов стали использовать процессоры на архитектуре ARM.

Для написания программ для архитектуры ARM можно использовать множество языков - С, С++, Java, Python, C# и т.д. Однако лучшим способом разобраться в том, как работает та или иная архитектура, глубже ее понять представляет язык ассемблера, в данном случае ассемблера под ARM. Написание программ на ассемблере, возможно, покажется более сложным, поскольку предстоит иметь дело непосредственно железом. Однако тем менее это сулить ряд преимуществ. Прежде всего ассемблер позволит писать более эффективный, компактный и производительный код, который лучше использует ресурсы компьютера. Причем даже если не планируется использовать ассемблер в повседневной разработке, то знание ассемблера все равно может обогатить арсенал разработчика, позволит писать более компактный и эффективный код на других языках более высокого уровня как Си или Python.

Первые смартфоны на iPhones и Android базировались на 32-битных ARM-процессорах. Но в 2013 Apple представила 64-битный чип A7 и начала миграцию всех программ под iOS на 64-битную архитектуру. За устройствами от Apple последовал переход на 64 бита и устройств под Android. Новый этап развития экосистемы устройств на ARM открыл релиз компанией Apple в 2020 году ПК и ноутбуков на платформе Apple Silicon (архитектура ARM64)

И на сегодняшний день почти все новые ARM-процессоры поддерживают 64-битную обработку данных. Операционные системы - iOS и Android также перешли на 64 бита. Arm-версия Windows тоже поддерживает только 64-битную архитектуру. Соответственно встает актуальность изучения именно языка ассемблера именно для архитектуру ARM64, поскольку по сравнению с ассемблером для 32-битным ARM имеются некоторые различия. Хотя ассемблер под 32-битные процессоры ARM по прежнему также используется, особенно это касается старых и слабых устройств.

Что потребуется для изучения ассемблера под ARM64? Прежде всего текстовый редактор для написания программ, а также компилятор для компиляции программ. Далее мы рассмотрим различные компиляторы и их использование на конкретных платформах. Кроме того, желательно устройство ARM для тестирования программ. Это может быть смартфон Android или десктопный компьютер на архитектуре ARM, например, на основе Raspberry Pi.

В дальнейшем в данном руководстве будет рассмотрено создание приложений под Linux ARM64 (в том числе Android), Windows ARM64 и MacOS Apple Silicon. Однако поскольку устройства на MacOS, доступны не только лишь всем, а компьютеры на Windows и Linux на платформе ARM64 - еще большая редкость, то в дальнейшем большая часть приверов будет рассматриваться и тестировать именно на Android, как наиболее доступный и распространенный вариант.

Профили ARM

В экосистеме Arm существуют десятки различных процессоров, каждый из которых соответствует архитектуре и профилю.

Архитектура определяет поддерживаемый наборы инструкций, доступный набор регистров, основные функции, которые должны поддерживать процессоры, и т.д. В мире ARM каждая архитектура имеет название в виде Armv[версия], например, Armv1, Armv2, Armv3 и т.д. Начиная с архитектуры Armv8, которая была анонсирована в октябре 2011 года, была добавлена поддержка 64-разрядности. 64-разрядное расширение Arm называют AArch64. Последней же версией архитектуры является Armv9, которая была анонсирована в марте 2021 года.

Кроме того, в рамках версии выходят подверсии, которые определяют новые функциональности. Например, на момент написания текущей статьи последними подверсиями являются Armv8.9 и Armv9.4

Кроме архитектуры есть такое понятие как профили. Существуют три профиля:

  • A: профиль «приложения» (application) (например, Armv8-A). Данный профиль предназначен для многофункциональных операционных систем, используемых в таких устройствах, как мобильные телефоны, устройства IoT, ноутбуки и серверы.

  • R: профиль «реального времени» (например, Armv8-R). Предназначен для систем реального времени или систем, критически важных для безопасности, таких как медицинские устройства, авионика и электронные тормоза в транспортных средствах. Процессоры R-профиля выполняют 32-битный код и поддерживают гораздо более ограниченную архитектуру памяти по сравнению с A-профилем.

  • M: профиль «микроконтроллера» (например, Armv8-M). Предназначен для микроконтроллеров, применяемых во встраиваемых системах, таких как промышленные устройства и некоторые устройства IoT.

Название профиля обычно прибавляется через дефис к версии архитектуры, например, Armv8-A - здесь A как раз указывает на профиль.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850