Написание кода сборки ARM


20

Получив Raspberry Pi, я решил, что хочу научиться писать код сборки ARM. У меня вопрос, что мне нужно, чтобы начать? Я предполагаю, что компилятор уже установлен, но я не знаю, что это такое (возможно, gcc?). Любая помощь приветствуется!


Вот еще одна (бесплатная) книга о сборке ARM: yurichev.com/writings/RE_for_beginners-en.pdf
Денис Юричев,

Ответы:


19

Зависит от того, сколько ассемблера вы хотите написать. Если вы хотите писать только небольшие фрагменты кода, встроенные в C-код, то gccэто действительно то, что вы ищете. Примеры того, как использовать asmдирективу в C, см. В справочнике inline asm: ARM GCC Inline Assembler Cookbook

Если, с другой стороны, вы хотите написать больше, чем просто небольшие фрагменты, вам лучше использовать полноценный ассемблер. Это будет доступно как либо as, так gasи оба (с псевдонимом).

И, наконец, вам нужно немного узнать о наборе команд ARM. Удобный справочник по адресу: ARM1176JZF-S Техническое справочное руководство .

NB Пожалуйста, помните, что RPi поддерживает только инструкции armv6 - так что не пытайтесь использовать что-либо из armv7

Удачи!! :)


4

Я начал свое приключение с ассемблерного кода ARM не так давно, и вот мои ресурсы:

  • Кембриджский университет опубликовал очень приличный набор учебников здесь: Выпечка Пи . Он включает в себя шаблон для вашей собственной ОС, полные примеры кода для каждого учебника и все инструкции о том, как создать и запустить ваш код.
  • Кроме того, эта здоровенная книга должна охватывать все основы: Руководство разработчика системы ARM .

3

Хотя я довольно удобен с интерфейсом командной строки, я не мог устоять перед удобством графического интерфейса. Некоторое время назад я обнаружил, что могу использовать IDB CodeBlocks для разработки программ на языке ассемблера ARM в Raspberry Pi. Поэтому я написал учебник и добавил его к учебнику по программированию сборки Raspberry Pi, который я написал для веб-сайта книги по сборке Mazidi ARM:

http://www.microdigitaled.com/ARM/ARM_ASM_books.htm

На сайте нажмите на ссылку «Программирование сборки ARM с использованием графического интерфейса Raspberry Pi».

Надеюсь это поможет.


1

GCC установлен по умолчанию. Если вы новичок в Raspberry Pi, я рекомендую вам взглянуть на более простой язык программирования, чем сборка ARM. Нет никаких IDE для сборки, поэтому вам придется использовать текстовый редактор и собирать его через терминал. Я рекомендую Gedit для простоты использования. Хотя, чтобы получить подсветку синтаксиса для сборки, мне нужно было перейти на github, в частности на страницу brightquagsire23. Это очень красиво. Что касается помощи Лучший ресурс, который я нашел, это "Язык сборки Raspberry Pi: Raspbian Beginners" Брюса Смита. Вы можете найти это на Амазоне. Он объясняет сборку одним из самых ясных и простых способов, которые я нашел.


1

Учитесь с работающими примерами

Я работаю над: https://github.com/cirosantilli/arm-assembly-cheat

Функции:

  • Точно такая же сборка может быть запущена на хосте Linux с пользовательским режимом QEMU, так что вы можете попробовать что-то более быстрое на вашем хосте, прежде чем переходить на родной на Pi
  • охватывает как ARMv7, так и ARMv8
  • хорошая настройка GDB из коробки, как на хосте, так и на нативном
  • имеет утверждения, которые показывают номер сборочной линии, где вещи не удалось
  • использует стандартную библиотеку C для ввода-вывода, что делает ее теоретически переносимой ОС и позволяет легко повторно использовать лакомства, такие как printfиmemcpy
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.