Изучение сборки ARM
В течение этого года появятся пара портативных компьютеров с несколькими сенсорными портами стоимостью до 600 евро, которые содержат Tegra2. Они приносят мне хороший повод для изучения языка сборки ARM. Но я понятия не имею, с чего начать со стороны arm.com.
Для первого броска я мог просто подобрать эмулятор с дистрибутивом linux. Но какой эмулятор и дистрибутив будут работать лучше всего на этом? Доступ к файлам хост-системы был бы в порядке, поэтому я мог бы скомпилировать и выполнить бинарные файлы ARM прямо из моего домашнего каталога.
Я бы не хотел тратить много денег на книги, поэтому мне нужны примеры исходного кода сборки и хорошее бесплатное введение в набор инструкций. gcc-компиляторы для компиляции ARM-программ на x86 также были бы хороши, но я мог бы найти их и сам.
Ответы
Ответ 1
Получите оценочную версию одного из инструментов инструментального инструмента для рук, который будет включать эмулятор отладчика/программного обеспечения. Если вы готовы потратить несколько сотен долларов, получите правую доску (Keil продает несколько). Вы можете протестировать свой код на плате через интерфейс JTAG и посмотреть, что происходит на реальном оборудовании.
Это должно заставить вас двигаться в правильном направлении
Раскрытие: я работаю для ARM.
Ответ 2
Справочные документы ARM действительно обеспечивают очень хорошее введение в набор инструкций. Это отличное место для начала.
Поскольку вы пишете сборку (и, вероятно, заинтересованы в деталях производительности на низком уровне), вам нужен либо точный симулятор цикла, либо реальное оборудование (или и то, и другое). Помимо аппаратных опций, предложенных David Lively, вы также можете посмотреть Beagle Board.
Что касается компиляторов, то есть инструменты ARM RealView и там GCC. Поддержка новых аппаратных функций может быть несколько более испечена в инструментах ARM.
Ответ 3
Лучший ресурс, который я нашел для изучения языка сборки ARM с нуля, - это учебник: "http://www.coranac.com/tonc/text/asm.htm"
Немного устаревший, но он объясняет основы сборки ARM, а затем вы сможете прочитать официальные руководства по ARM, чтобы увидеть специфику устройства, на которое вы нацеливаете. Например, если вы нацеливаетесь на смартфоны, тогда ARM v7 является очень популярным набором инструкций в эти дни, поэтому вы можете настроить таргетинг и узнать о Thumb-2 и более новых технологиях. Или, если вы нацелены на встроенные микроконтроллеры, которые стоят всего несколько долларов, есть несколько немного разных функций и т.д.
Ответ 4
Начните с qemu для эмулятора, дистрибутивов linux и некоторых плат на рынке и вне его. Перейти к sparkfun.com есть много до $50 досок для обучения ассемблера руки, но не обязательно linux. Вы хотите изучить arm7 или руку сначала, а затем второй. Плакат с эмблемой (при условии, что он не слишком дешево сделан) лучше, чем beagleboard, чтобы сделать beagleboard полезным, вам нужно потратить еще 150 долларов на кабели и USB-накопители. На борту эмблемы потребовалось неделю или две, чтобы добраться до США с момента ее заказа. За эти деньги я предпочитаю openrd board или подключаемый компьютер с marvell sheeva. Или для более старой системы перейдите к embeddedarm.com. если вы ищете ассемблер, вам не нужна система, совместимая с Linux, так что идите на что-то от sparkfun, arm7, как на sam7 или lpc, есть один с последовательным портом на борту уже, но вы должны предоставить мощность. Получите jtag-tiny или три от amontec, отличный инструмент, чтобы просто иметь.
Продвижение игрового мальчика - это хорошее место, чтобы научиться программировать руку, а также большой палец, продвижение visualboy - хороший эмулятор. Я могу показать вам, как сделать серийный кабель и найти аппаратное обеспечение для других целей. Есть Linux. NDS (Nintendo DS) также является хорошей системой, но я бы начал сначала с GBA. Избегайте NDSi.
Отказ от ответственности: у меня нет привязанности от руки, но есть хотя бы одно из всего, что описано выше, плюс несколько советов стеллариса (thumb2 узнайте, что кость-m3 LAST после руки и большого пальца).
Ответ 5
Учитесь с работающими примерами
Я работаю над: https://github.com/cirosantilli/arm-assembly-cheat
Особенности:
- может быть запущен либо с хоста Linux с пользовательским режимом QEMU без необходимости платы ARM, но и изначально, если у вас есть плата, такая как Raspberry Pi
- охватывает как ARMv7, так и ARMv8
- хорошая настройка GDB из коробки, как на хосте, так и на нативном
- имеет утверждения, которые показывают номер сборочной линии, где вещи не удалось
- использует стандартную библиотеку C для ввода-вывода, что делает ее теоретически переносимой ОС и позволяет легко повторно использовать лакомства, такие как
printf
и memcpy
Ответ 6
Пожалуйста, можете объяснить мне эту концепцию сборки макросов