Андрей Ипполитов – Ассемблер ARM64 (страница 2)
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