Среда разработки XCode позволяет упростить разработку на ассемблере ARM. Рассмотрим создание и запуск программы на ассемблере ARM64 в XCode.
Прежде всего создадим в XCode новый проект.
В списке шаблонов проектов выберем шаблон Command Line Tool
На следующем шаге укажем для нашего проекта какое-либо имя, например, HelloAsm, и в качестве языка выберем C:
XCode по умолчанию создает следующий проект, где имеется один файл main.c
с шаблонным кодом на языке C:
Если бы мы использовали в программе какое-нибудь взаимодействие между С и ассемблером, то в принципе мы могли бы еще как-то использовать файл main.c
. Но конкретно в данном
случае он нам не нужен, и мы можем его удалить. И добавим в проект новый файл:
Для этого в окне добавления нового файла в самом низу выберем шаблон Assembly File. И далее дадим ему какое-нибудь имя, например hello
В добавленном файле определим следующий код:
// // METANIT.COM. Программа на ассемблере для Mac OS Silicon, которая // выводит на консоль строку "Hello METANIT.COM!" // .global _main // Устанавливаем точку входа в программу для компоновщика .align 2 // Для MacOS требуется выравнивание в 4 байта // _main - точка входа в программу _main: mov X0, #1 // значение 1 представляет стандартный поток вывода (консоль) adr X1, message // передаем адрес строки для вывода на консоль mov X2, #19 // размер строки в байтах mov X16, #4 // номер системного вызова Unix для записи в поток (на консоль) svc #0x80 // вызываем системную функцию с номером 4 // выход из программы mov X0, #0 // устанавливаем код возврата mov X16, #1 // системный вызов 1 завершает программу svc #0x80 // вызываем системную функцию с номером 1 message: .ascii "Hello METANIT.COM!\n"
По сути здесь вся та же самая программа, что рассматривалась в прошлой теме и которая выводила строку на консоль, только сама программа теперь проецируется на метку _main.
Для запуска программы нажмем на черную стрелку над структурой проекта. И под исходным кодом отобразится окно консольного вывода, которое отобразит нашу строку.