Изучение ARM сборки - PullRequest
       14

Изучение ARM сборки

22 голосов
/ 22 февраля 2010

В течение этого года будет выпущена пара мультитач-портативных компьютеров стоимостью менее 600 евро, которые содержат Tegra2. Они дают мне хороший повод для изучения языка ассемблера ARM. Но я понятия не имею, с чего начать с сайта arm.com.

Для первого броска я мог бы просто подобрать эмулятор с дистрибутивом linux. Но какой эмулятор и дистрибутив будут работать лучше на этом? Было бы хорошо иметь доступ к файлам хост-системы, чтобы я мог компилировать и запускать двоичные файлы ARM прямо из моего домашнего каталога.

Я бы не хотел тратить много денег на книги, поэтому мне понадобятся несколько примеров исходного кода сборки и хорошее бесплатное введение в набор инструкций. Флаги компилятора gcc для компиляции ARM-программ на x86 также были бы хороши, но я мог бы также найти их сам.

Ответы [ 5 ]

10 голосов
/ 22 февраля 2010

Получите ознакомительную версию одного из наборов программного обеспечения arm , который будет включать в себя отладчик / программный эмулятор. Если вы готовы потратить несколько сотен долларов, возьмите доску с подлокотниками ( Keil продает несколько). Вы можете проверить свой код на плате через интерфейс JTAG и посмотреть, что происходит на реальном оборудовании.

Это должно привести вас в правильном направлении

Раскрытие информации: я работаю на ARM.

7 голосов
/ 22 февраля 2010

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

Поскольку вы пишете сборку (и, следовательно, возможно, заинтересованы в низкоуровневых деталях производительности), вам понадобится либо симулятор с точностью до цикла, либо реальное аппаратное обеспечение (или и то, и другое). Помимо аппаратных опций, предложенных David Lively , вы также можете взглянуть на Beagle Board .

Что касается компиляторов, есть инструменты RealView от ARM и GCC. Поддержка новых аппаратных функций может быть более полно реализована в инструментах ARM.

5 голосов
/ 31 марта 2011

Лучший ресурс, который я нашел для изучения языка ARM Assembly с нуля, - это руководство: "http://www.coranac.com/tonc/text/asm.htm"

Это немного устарело, но объясняет основы сборки ARM, и тогда вы сможете прочитать официальные справочные руководства ARM, чтобы увидеть особенности устройства, на которое вы ориентируетесь. Например, если вы нацелены на смартфоны, то ARM v7 является очень популярным набором инструкций в наши дни, поэтому вы можете нацелиться на него и узнать о Thumb-2 и более новых технологиях. Или, если вы нацелены на микросхемы встроенных микроконтроллеров, которые стоят всего несколько долларов, доступны некоторые немного другие функции и т. Д.

3 голосов
/ 23 февраля 2010

Начните с qemu для эмулятора, linux-дистрибутивов и некоторых плат на рынке и за его пределами. Зайдите на sparkfun.com. Есть много плат за $ 50 для изучения ассемблера, но не обязательно linux. Вы хотите выучить сначала arm7 или arm, а затем thumb. Доска для рекламы (при условии, что она не слишком дешевая) лучше, чем доска для бега, так как для того, чтобы сделать ее полезной, вам понадобится потратить еще 150 долларов на кабели и USB. Доска объявлений о сборе заняла неделю или две, чтобы добраться до США с момента заказа. За эти деньги я предпочитаю открытую плату или подключаемый компьютер с Marvell Sheeva. Или для более старой системы перейдите на Embeddedarm.com. Если вы ищете ассемблер, вам не понадобится система с поддержкой Linux, так что выбирайте что-нибудь из sparkfun, arm7, например, sam7 или lpc, у вас уже есть последовательный порт, но вы должны подавать питание. Получите Jtag-Tiny или три от Amontec, отличный инструмент, чтобы просто иметь.

Game boy advance - это хорошее место, чтобы научиться программировать руку и большой палец, visualboy advance - хороший эмулятор. Я могу показать вам, как сделать последовательный кабель и найти оборудование для других вещей. Есть линукс. NDS (Nintendo DS) также является хорошей системой, но я бы сначала начал с GBA. Избегайте NDSi.

Отказ от ответственности: я не имею никакого отношения к руке, но имею по крайней мере одно из всего, что описано выше, плюс несколько звездных досок (thumb2 изучает кортекс-m3 ПОСЛЕДНЕЕ после руки и большого пальца).

1 голос

Учитесь на работоспособных примерах

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

Особенности:

  • может быть запущен либо с хоста Linux с пользовательским режимом QEMU без необходимости использования платы ARM, но и изначально, если у вас есть плата, подобная Raspberry Pi
  • охватывает как ARMv7, так и ARMv8
  • хорошая настройка GDB из коробки, как на хосте, так и на нативном
  • имеет утверждения, которые показывают номер сборочной линии, где произошел сбой
  • использует стандартную библиотеку C для ввода-вывода, что делает ее теоретически переносимой ОС и позволяет легко повторно использовать такие функции, как printf и memcpy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...