Schreiben von ARM-Assembly-Code


20

Nachdem ich meinen Raspberry Pi bekommen hatte, entschied ich, dass ich lernen wollte, wie man ARM-Assembler-Code schreibt. Meine Frage ist, was muss ich anfangen? Ich gehe davon aus, dass bereits ein Compiler installiert ist, aber ich weiß nicht, was es ist (gcc vielleicht?). Jede Hilfe wird geschätzt!


Hier ist ein weiteres (kostenloses) Buch über die ARM-Montage: yurichev.com/writings/RE_for_beginners-en.pdf
Dennis Yurichev

Antworten:


19

Hängt davon ab, wie viel Assembler Sie schreiben möchten. Wenn Sie nur kleine Schnipsel schreiben möchten, die in C-Code eingebettet sind, dann gccist dies in der Tat das, wonach Sie suchen. Beispiele für die Verwendung der asmDirektive in C finden Sie unter inline asm reference at: ARM GCC Inline Assembler Cookbook

Wenn Sie jedoch mehr als nur kleine Schnipsel schreiben möchten, ist es besser, einen vollständigen Assembler zu verwenden. Dies wird entweder als zur Verfügung steht as, gasoder beide (aliased).

Und zum Schluss müssen Sie noch etwas über den ARM-Befehlssatz lernen. Eine praktische Referenz finden Sie unter: ARM1176JZF-S Technical Reference Manual .

NB Bitte denken Sie daran, dass RPi nur armv6-Anweisungen unterstützen. Versuchen Sie also nicht, etwas von armv7 zu verwenden

Viel Glück!! :)


4

Ich habe mein Abenteuer vor nicht allzu langer Zeit selbst mit ARM-Assembler-Code begonnen und hier sind meine Ressourcen:

  • Die Universität von Cambridge hat hier eine Reihe anständiger Tutorials veröffentlicht: Baking Pi . Es enthält eine Vorlage für Ihr eigenes Betriebssystem, vollständige Codebeispiele für jedes Lernprogramm und alle Anweisungen zum Erstellen und Ausführen Ihres Codes.
  • Darüber hinaus sollte dieses umfangreiche Buch alle Grundlagen abdecken: ARM System Developer's Guide .

3

Obwohl ich mit der Befehlszeilenschnittstelle ziemlich vertraut bin, konnte ich dem Komfort der grafischen Benutzeroberfläche nicht widerstehen. Vor einiger Zeit entdeckte ich, dass ich mit CodeBlocks IDE ARM-Assembler-Programme in einem Raspberry Pi entwickeln konnte. Also schrieb ich ein Tutorial und fügte es dem Tutorial zur Raspberry Pi-Assembly-Programmierung hinzu, das ich für die Website des Mazidi ARM Assembly-Buches schrieb:

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

Klicken Sie auf der Website auf den Link "ARM Assembly Programming Using Raspberry Pi GUI".

Hoffe das hilft.


1

GCC wird standardmäßig installiert. Wenn Sie Raspberry Pi noch nicht kennen, sollten Sie sich eine einfachere Programmiersprache als ARM-Assembly ansehen. Es gibt keine IDEs für die Assemblierung, daher müssen Sie einen Texteditor verwenden und ihn über das Terminal zusammenstellen. Ich empfehle Gedit für die Benutzerfreundlichkeit. Um Syntax-Hervorhebungen für Assembler zu erhalten, musste ich zum Github gehen, speziell zur Seite von shinyquagsire23. Es ist sehr schön. Hilfe Die beste Ressource, die ich gefunden habe, ist "Raspberry Pi Assembly Language: Raspbian Beginners" von Bruce Smith. Sie finden es bei Amazon. Er erklärt die Montage auf eine der klarsten und einfachsten Arten, die ich gefunden habe.


1

Lernen Sie mit ausführbaren Beispielen

Ich arbeite an: https://github.com/cirosantilli/arm-assembly-cheat

Eigenschaften:

  • Die exakt gleiche Assembly kann auf einem Linux-Host mit QEMU-Benutzermodus ausgeführt werden, sodass Sie Dinge auf Ihrem Host schneller ausprobieren können, bevor Sie auf dem Pi nativ werden
  • deckt sowohl ARMv7 als auch ARMv8 ab
  • Gutes GDB-Setup, sowohl auf dem Host als auch auf dem Native
  • hat Zusicherungen, die die Fließbandnummer anzeigen, an der die Dinge fehlgeschlagen sind
  • verwendet die C-Standardbibliothek für E / A, wodurch das Betriebssystem theoretisch portabel ist und Goodies wie printfund problemlos wiederverwendet werden könnenmemcpy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.