2015-08-26 11 views
21

Okay, ich kenne C++, C#, Java und einige andere Sprachen und ich beschloss, die Montage als nächstes zu lernen, aber ich fühle mich, als hätte ich von Anfang an eine solide Mauer geschlagen. Ich brauche nur jemanden, der mich in die richtige Richtung weist.Woher soll ich x64 Assembly lernen?

Hier sind die Fragen:

  1. Ich habe gesagt, dass es besser ist, Montag aus dem Internet zu lernen, als aus Büchern, weil die Montag auf Ihrer Hardware abhängig und Bücher sind meist veraltet. Ist das wahr?

  2. Ich habe eine 64-Bit-CPU und ich benutze (oder versuche zumindest zu verwenden) FASM. Wo finde ich die notwendigen Unterlagen?

  3. Ich bin total verwirrt, weil die meisten Tutorials, die ich gesehen habe, nicht einmal für mich funktionieren. Liegt das an den Hardwareunterschieden? Wie finde ich die richtigen Tutorials?

  4. Kann ich x86- und x32-Assembly auf meinem 64-Bit-Computer ausführen?

  5. Könnten Sie bitte so nett sein und schreiben Sie mir ein einfaches Programm in der Montage (das funktioniert auf meinem PC) mit einer Aufschlüsselung in den Kommentaren? Ich benutze 64 Bit Windows 10 auf meinem Intel Core i5 CPU. Bitte.

+0

Sie könnten einfache Programme in C schreiben und den Quellcode des C-Compilers ausgeben lassen. Verwenden Sie diese als Grundlage. Sie haben nicht erwähnt, ob Sie unter Windows oder einer anderen Linux-Version laufen. Im Fall von Windows können Sie 32-Bit-Programme, aber keine 16-Bit-Programme auf 64-Bit-Versionen von Windows ausführen. Für 64-Bit-Versionen könnten Sie Virtual PC oder etwas wie Dosbox verwenden. – rcgldr

+0

Wenn Sie Windows 7 oder höher haben, können Sie Visual Studio für Desktop Express 2015 kostenlos erhalten. Dazu gehören Assembler für 32-Bit (ml.exe) und für 64-Bit (ml64.exe) und ein guter Source-Level-Debugger. – rcgldr

Antwort

25

Ich denke, das ist eine gültige Frage. Es kann etwas schwierig sein, aktuelle Informationen zu Assembler zu finden.

  1. Ja. Viele Ressourcen gedruckt und online beschreiben i386 (x86) Assembler und nicht die neue amd64 (x86_64). Viele Dinge haben sich geändert, z.B. Funktionsargumente wurden auf dem Stack übergeben, jetzt werden sie in Registern übergeben. Dies gilt sowohl für Unix als auch für Windows.

    Grundsätzlich sicherstellen, dass Sie über 64-Bit-Assembly lesen.

  2. Warum nicht versuchen, die online manual. Beachten Sie, dass Assembler nicht so verschieden sind, wenn es um einfache Dinge geht.

  3. Ich habe kein Windows, aber wenn Sie Probleme mit einem bestimmten Programm haben, können Sie hier nachfragen. Sie müssen das eigentliche fehlerhafte Programm buchen.

  4. Ja, aber Sie müssen es mit 32-Bit-Bibliotheken verknüpfen und die 32-Bit-Version der Win32-API verwenden. Aber wenn Sie anfangen, warum Programm in den 1980er Jahren, wenn Sie mit dem modernen Befehlssatz arbeiten können?

  5. Versuchen Sie this.

Auch, wenn Sie die Programmierung in der Montage zu gehen, empfehle ich Ihnen dringend, einen Debugger zu bekommen. Ich benutze GDB, die gut funktioniert und ist frei, unter Windows können Sie den Visual Studio Debugger verwenden, der hervorragend ist.

+0

In den alten Tagen erinnere ich mich an Debugging ohne Debugger. Es ist weit weniger effizient, aber immer noch sehr machbar. –

+0

@MichaelPetch Ich habe es auch gemacht, würde es aber nicht empfehlen, wenn es großartige kostenlose Debugger gibt. – jforberg

+1

Vorteil der nicht mit einem Debugger ist, dass, anstatt die Versuch-und-Fehler-Methode des Lernens Assembly (Debugger sind groß dafür) verwenden, Sie gezwungen sind, ein besseres Verständnis der Assembler-Sprache für eine bestimmte Architektur haben. Heutzutage beantworte ich Assembler-Fragen zu SO und anstatt mir die Zeit zu nehmen, es selbst zu kompilieren, untersuche ich den Code normalerweise visuell auf Fehler. Wenn ich die Wahl hätte, jemanden einzustellen, der ohne einen Debugger nicht debuggen kann, und einen, der (vorausgesetzt, alles andere ist gleich), würde ich das letztere wählen. –

Verwandte Themen