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!

ohblahitsme
quelle
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!! :)

Maria Zverina
quelle
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 .
Piotr Justyna
quelle
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.

schen
quelle
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.

Dunkles Ronin
quelle
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
Ciro Santilli ist ein Schauspieler
quelle