Frage

Ich möchte Assembler lernen. Allerdings gibt es nur sehr wenige Ressourcen für Assembler mit OS X zu tun.

Gibt es jemanden gibt, der in der Montage auf einem Mac programmiert? Wo hast du das gelernt?

Und, gibt es keinen Grund sollte ich nicht Montage tun? Riskieren I (erheblich) unwiederbringlich mein Computer abstürzt?

War es hilfreich?

Lösung

Wenn Sie einen PowerPC Mac verwenden, schauen Sie in gcc Inline-Assembler. Ansonsten schauen Sie in nasm. Ich kann keine anständigen Verweise auf PPC ASM geben (sie sind dünn gesät), aber ich schlage vor, die folgenden Dinge x86 asm zu lernen:

  • Das Buch Umkehren von Eldad Eilam
  • Übersetzen einfache C-Quelle mit gcc -S und lesen Sie die Montage erzeugt
  • Verwenden Sie Sandhaufen
  • Join #openrce auf irc.freenode.net und verwenden OpenRCE

Auch wenn Sie nicht im Kernel-Modus sind, dann gibt es keine Möglichkeit, etwas zu vermasseln, wirklich, und auch wenn Sie im Kernel-Modus ist es schwer ist, um wirklich etwas zu zerstören.

Edit: Außerdem erhält gcc und solche von XCode nicht Macports, etc. zu jagen. Sie sind in einer Welt mißgebildeter Mach-O-Dateien, wenn Sie dies nicht tun. Nicht Spaß Themen Dateiformat zu diagnostizieren, wenn Sie gerade asm Hacking beginnen.

Andere Tipps

Die Assemblersprache wird von der Hardware-Plattform bestimmt, nicht das Betriebssystem. Da OS X läuft auf Intel-Plattform und ist 64-bit, sollten Sie sich für Informationen über x64 aussehen (auch als AMD64) Assembler. Schauen Sie sich die Wikipedia-Artikel ( http://en.wikipedia.org/wiki/X86-64) für eine Vielzahl von Links zur Dokumentation über x64.

Außerdem enthält das OS X Tools Dokumentation kann unter Umständen viele Informationen über x64-Assembler. Insbesondere die Netwide Assembler (NASM - http://developer.apple.com /documentation/DeveloperTools/nasm/nasmdoc0.html ) könnte Dokumentation haben, wie OS X-Anwendungen erstellen Assembler.

Montage Lernen zu beginnen, möchten Sie vielleicht mit einfachen C-Programme starten und fragen GCC den Assembler-Code für sie mit der Option -S zu generieren:

gcc -S hello.c -o hello.asm

Sie werden dann in der Lage sein zu verstehen, wie Funktionen aufrufen, übergeben Argumente, etc.

NASM / yasm ist die beste Wahl; gcc inline Syntax ziemlich lähmend und kann sehr schmerzhaft sein manchmal zu verwenden, dazu gibt es buchstäblich einige Dinge, die es nicht tun. Nasm Makro Syntax ist auch viel viel nützlicher, ein Geschenk des Himmels in einer Sprache wie Assembly, hat keine eingebaute in Templating Features.

XCode (dh. GCC) hat große Unterstützung Assembler für das Schreiben. Es ist ein Spaß, was zu lernen (obwohl Sie wahrscheinlich sind sie braucht viel), und das Schlimmste, was Sie tun können, um das Programm zum Absturz bringen Sie, genau wie in C. Nur Google für ‚gcc inline asm x86 Tutorial‘ zu schreiben und Sie sollte viele Anknüpfungspunkte finden. Sorgen Sie sich nicht, dass einige scheinen Linux-spezifisch zu sein, sie werden in der Regel genauso gut in XCode arbeiten.

(edit) ... vorausgesetzt, Sie einen Intel-Mac natürlich haben; wenn nicht, dann ersetzen 'x86' mit 'ppc'.

hier

Ich programmierte Montage auf einem Mac. Es war Motorola 680x0-Assembler MPW verwenden. Ich habe auf den PowerPC-Assembler ein paar Mal in Codewarrior und Project berührt. Jetzt Project wird XCode genannt, und es ist Intel. Der Assembler ist eine der vielen Werkzeuge innerhalb XCode.

Ich lernte ursprünglich Assembler auf dem Apple II: dem 6502 Maschinensprache-Monitor im ROM eingebaut, die Sweet16 Mini-Assembler und andere. Später benutzte ich Intel 80186 Assembler langsam Bits von C-Code zu beschleunigen, und die Arbeit für eine eintägige Kurs auf Intel 80186 Assembler an einer Universität bezahlt. Später hatte ich für den Mac etwas 680x0 Montage zu halten. Das war vor langer Zeit.

Ich glaube nicht, gibt es keinen Grund nicht Montage zu tun. Lernen ist groß. Erfahren Sie alles, was Sie können. Drop in einem ausreichend niedrigen Level-Debugger und sehen Sie die demontierten Code.

Mein Rat ist:

  

Haben Sie keine Angst.

Es gibt keinen Grund, warum sollten Sie nicht; es gibt nichts, was man in Assembler-Sprache tun, dass Sie nicht in einer höheren Sprache wie C tun können.

Soweit Werkzeuge gehen, sollten Sie MacPorts und erhalten das GNU Assembler installieren. Das kann oder kann nicht der einfachste Weg sein, aber es ist kostenlos und Sie können wahrscheinlich Tutorial Dokumentation für das Schreiben von Unix-Programmen in GNU Assembler irgendwo im Netz finden.

Es gibt zwei drei Dinge, die Sie Assemblersprache wissen müssen für das Schreiben auf einem System mit einem Betriebssystem (im Gegensatz zu ‚Bare-Metal‘ Anordnung, die eine eigenen Welt ist):

  1. Wie der Befehlssatz arbeitet - Lasten der Mittel für das Intel X86, wenn Sie einen Intel-Mac haben, noch vertretbare für PPC zum Beispiel: Mac OS X Internals .

  2. Wie Sie Ihre Programme zusammen verknüpfen - wenn Sie die Entwickler-Tools installiert haben Sie GCC und die zugehörigen Tools

  3. Wie das OS zu sprechen - ist hier, wo Mac Montage eine Los weniger gut dokumentiert als Windows oder Linux. Es kann sein, Sie gleichwertige C-Programme zu schreiben und verwenden ‚gcc -S‘ zu sehen, was calling / Stack Restaurierung Konventionen geeignet sind. Es hängt davon ab, was Sie tun wollen, aber bei einem miniumum benötigen Sie OS-System fordert IO und Speicherzuweisung.

Ein guter Ausgangspunkt ist hier .

Wenn Sie haben Developer Tools installiert ist, können Sie einfach öffnen Terminal und ein wie ( GNU Assembler -. Teil von Binutils )

Für PPC versuchen Lightsoft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top