Écriture du code d'assemblage ARM


20

Après avoir obtenu mon Raspberry Pi, j'ai décidé que je voulais apprendre à écrire le code d'assemblage ARM. Ma question est, de quoi ai-je besoin pour commencer? Je suppose qu'il y a déjà un compilateur installé mais je ne sais pas ce que c'est (gcc peut-être?). Toute aide est appréciée!


Voici un autre livre (gratuit) sur l'assemblage ARM: yurichev.com/writings/RE_for_beginners-en.pdf
Dennis Yurichev

Réponses:


19

Cela dépend de la quantité d'assembleur que vous souhaitez écrire. Si vous souhaitez écrire uniquement de petits extraits intégrés dans du code C, gccc'est bien ce que vous recherchez. Des exemples d'utilisation de la asmdirective en C voir la référence asm en ligne sur: ARM GCC Inline Assembler Cookbook

Si, d'un autre côté, vous voulez écrire plus que de petits extraits, vous feriez mieux d'utiliser un assembleur complet. Ce sera disponible en tant que l'un ou l' autre as, gasou les deux (alias).

Et enfin, vous devrez en apprendre un peu plus sur le jeu d'instructions ARM. Il y a une référence pratique à: ARM1176JZF-S Manuel de référence technique .

NB N'oubliez pas que RPi ne prend en charge que les instructions armv6 - n'essayez donc pas d'utiliser quoi que ce soit d'armv7

Bonne chance!! :)


4

J'ai commencé mon aventure avec le code assembleur ARM il n'y a pas si longtemps moi-même et voici mes ressources:

  • L'Université de Cambridge a publié un ensemble de tutoriels très décent ici: Baking Pi . Il comprend un modèle pour votre propre système d'exploitation, des exemples de code complets pour chaque didacticiel et toutes les instructions sur la façon de créer et d'exécuter votre code.
  • De plus, ce livre volumineux devrait couvrir toutes les bases: ARM System Developer's Guide .

3

Bien que je sois assez à l'aise avec l'interface de ligne de commande, je n'ai pas pu résister à la commodité de l'interface graphique. Il y a quelque temps, j'ai découvert que je pouvais utiliser CodeBlocks IDE pour développer des programmes en langage assembleur ARM dans un Raspberry Pi. J'ai donc écrit un tutoriel et je l'ai ajouté au tutoriel de programmation d'assemblage Raspberry Pi que j'ai écrit pour le site Web du livre d'assemblage Mazidi ARM:

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

Sur le site Web, cliquez sur le lien «Programmation de l'assemblage ARM à l'aide de l'interface graphique Raspberry Pi».

J'espère que cela t'aides.


1

GCC est installé par défaut. Si vous êtes nouveau sur Raspberry Pi, je vous recommande de regarder un langage de programmation plus simple que l'assemblage ARM. Il n'y a pas d'IDE pour l'assemblage, vous devrez donc utiliser un éditeur de texte et l'assembler via le terminal. Je recommande Gedit pour la facilité d'utilisation. Bien que pour obtenir la coloration syntaxique pour l'assemblage, je devais aller sur github, en particulier la page de shinyquagsire23. C'est très joli. Quant à l'aide La meilleure ressource que j'ai trouvée est "Raspberry Pi Assembly Language: Raspbian Beginners" par Bruce Smith. Vous pouvez le trouver sur Amazon. Il explique l'assemblage de l'une des manières les plus claires et les plus simples que j'ai trouvées.


1

Apprenez avec des exemples exécutables

Je travaille sur: https://github.com/cirosantilli/arm-assembly-cheat

Fonctionnalités:

  • le même assemblage peut être exécuté sur un hôte Linux avec le mode utilisateur QEMU, vous pouvez donc essayer des choses plus rapidement sur votre hôte avant de devenir natif sur le Pi
  • couvre à la fois ARMv7 et ARMv8
  • bonne configuration GDB prête à l'emploi, à la fois sur l'hôte et natif
  • a des assertions qui montrent le numéro de la chaîne d'assemblage où les choses ont échoué
  • utilise la bibliothèque standard C pour IO, ce qui le rend portable en théorie et permet de réutiliser facilement des goodies comme printfetmemcpy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.