реклама
Бургер менюБургер меню

Андрей Ипполитов – Ассемблер ARM64 (страница 2)

18

macOS:

Специфические моменты, связанные с работой на этой платформе.

Кому предназначена эта книга:

Начинающим программистам: Если вы хотите копнуть глубже, чем просто написание скриптов.

Опытным разработчикам: Желающим расширить свои знания и освоить новые парадигмы программирования.

Системным администраторам и

DevOps-

специалистам: Интересующимся внутренним устройством систем.

Студентам технических специальностей: Изучающим информатику, компьютерную инженерию или смежные области.

Предварительные знания:

Для успешного освоения материала желательно иметь базовое представление о принципах работы компьютеров и программирования. Знакомство с каким-либо высокоуровневым языком программирования также будет плюсом, так как вы сможете проводить параллели и лучше понимать абстракции.

Путь к мастерству:

Изучение ассемблера – это марафон, а не спринт. Не ожидайте, что вы станете экспертом за одну ночь. Главное – это терпение, практика и последовательность. Я предлагаю вам вместе шаг за шагом разбирать каждую тему, решать практические задачи и экспериментировать.

Готовы ли вы к этому захватывающему путешествию? Откройте для себя мир, где код оживает, и где вы контролируете каждое действие процессора.

Далее, по умолчанию, все относится к ассемблеру GAS для MacOS на чипе ARM64 (M chip)

Прежде чем начать

Прежде чем писать код, нам нужно убедиться, что у нас есть все необходимое. На macOS для разработки на ассемблере нам потребуются:

Xcode Command Line Tools: Это набор утилит командной строки, который включает в себя компилятор (ассемблер) as и компоновщик ld, а также отладчик lldb. Если они еще не установлены, вы можете сделать это, выполнив в Терминале:

$ xcode-select —install

Затем установим IDE. IDE расшифровывается как интегрированная среда разработки (Integrated Development Environment). Это программное обеспечение, которое предоставляет разработчикам следующие функции:

Редактор кода: удобный инструмент для написания и редактирования программного кода.

Компилятор или интерпретатор: преобразует написанный код в исполняемый файл.

Отладчик: помогает находить и устранять ошибки в коде.

IDE значительно упрощает процесс разработки, собирая все необходимые инструменты в одном приложении. Мы скачаем и установим программу kitasm. Для установки пройдите на сайт www.kitasm.site и загрузите последнюю версию. Программа платная, но можно скачать демо версию, она тоже подойдет. Затем разархивируйте пакет с программой, войдите в терминал и введите команду:

$ sudo xattr -r -d com.apple.quarantine kitasm.app

Эта команда разрешит запуск программы, загруженной из интернета. Теперь запустим kitasm.

Программа kitasm

Слева панель для отображения меток и переменных, справа панель для вывода регистров дебаггером. Посередине простой редактор кода с подсвечиваемым синтаксисом. Внизу окно для вывода логов.

Глава 1 Первая программа

Создание первой программы с использованием ассемблера – увлекательный процесс, который позволяет увидеть, как работает низкоуровневое программирование. Давайте создадим простую программу, которая выводит текст на экран.

Hello world

Откроем kitasm и напишем следующий код:

.global _start

.text

_start:

; Системный вызов для записи (write)

; x0 = файловый дескриптор (1 – stdout)

; x1 = указатель на буфер с сообщением

; x2 = длина сообщения

mov x0, 1 ; stdout

adr x1, message ; Указатель на строку message

mov x2, #13 ; Длина строки "Hello, ARM64!\n"

mov x16, 4 ; Номер системного вызова SYS_write

svc #0 ; Вызов ядра

; Системный вызов для завершения программы (exit)

; x0 = код возврата (0 – успешно)

mov x0, 0 ; Код возврата 0

mov x16, 1 ; Номер системного вызова SYS_exit

svc #0 ; Вызов ядра

message:

.ascii "Hello, World!\n"

Теперь сохраним в «Hello, World.s» и запустим его на выполнение. Для этого нажимаем правую кнопку мыши и выбираем пункт «run». Если все прошло успешно

внизу программы kitasm, в окне input/output вы увидите вывод фразы «Hello world!». Также там будет показан выход из программы с параметром 0. Это означает, что программа завершилась без ошибок.

Hello, World!

End program. Exitcode: 0

В папке куда вы сохранили, появится исполняемый файл «helloworld». Его можно запустить, написав в терминале команду:

$ ./helloworld

Комментарии в ассемблере обозначаются символом «;» или