2012-05-22 6 views
8

Ich möchte 64-Bit-Windows-Assembly (vorzugsweise mit NASM) programmieren. Ich habe schon ziemlich auf Google geschaut, aber es scheint, dass ich keinen 64-Bit-Windows-Compiler finden kann. Auf einigen Seiten wurde ml64 erwähnt, aber es scheint, als wäre es nicht mehr in VC++ enthalten. Ich habe es mit 32-Bit-Assembly versucht, aber offensichtlich stürzt es einfach auf meinem 64-Bit-Rechner ab. Können 32-Bit-Assembly-Anwendungen auf einer 64-Bit-Windows-Maschine geschrieben, kompiliert und ausgeführt werden? Oder sollte es für 64 Bits geschrieben und kompiliert werden?64-Bit-Windows-Assembler

Danke.

+0

Für die Aufzeichnung wird ml64.exe in meiner Installation von VS2010 enthalten. Ich bin mir nicht sicher, ob es in der Express-Version aber enthalten ist ... – PinnyM

+1

VS2010 Express Benutzer hier, ml64.exe ist in Visual Studio/VC/bin/AMD64 und bin/x86_AMD64 Ordner vorhanden. – DCoder

+0

Wenn Sie NASM verwenden möchten, gehen Sie einfach zu http://nasm.us und laden Sie die Win32-Version von NASM herunter. Es wird auf einem 64-Bit-System ausgeführt und es werden 64-Bit-Anwendungen erstellt. –

Antwort

6

Yasm (*) ist ein moderner Multi-Plattform NASM-rewritten Assembler, der in der Lage ist, sowohl x86- als auch AMD64/x86-64-Befehlssätze zu erstellen.

Allerdings ... Was Sie wahrscheinlich meinen, ist, dass Sie einen Linker benötigen, um den zusammengesetzten Objektcode/die Datei (en) zu verknüpfen, um eine ausführbare Datei zu erstellen. Zumindest das vollständig freie MinGW (Minimal GNU für Windows) -Projektpaket wird mit einem Linker (genannt ld) ausgeliefert, der sowohl 32- als auch 64-Bit-Windows-Programme aus Objektdateien zusammenstellen kann (zumindest ELF- und PE-Objektformat).

Sie können 32-Bit-Projekte in einer 64-Bit-Umgebung und umgekehrt kompilieren/erstellen, vorausgesetzt, dass Sie dem Assembler und dem Linker korrekte Befehlszeilenparameter bereitstellen. Genauere Informationen finden Sie in der Dokumentation der Tools Ihrer Wahl.

*) http://yasm.tortall.net/

+0

Ich denke, ld ist nur der Linker .. –

+0

Das ist richtig. Danke, dass du es aufgezeigt hast, ich habe den Kontext völlig falsch verstanden und die Terminologie gemischt. Ich habe die Antwort für weitere Details bearbeitet und verbessert. – zxcdw

+0

Vielen Dank für Ihren Beitrag. Ich benutze ld, um es zu verbinden, aber es scheint immer noch zu stürzen. Ist es möglich, dass Sie mir einen Ausschnitt von Assembler-Code liefern, der mit yasm kompilieren und auf einem 64-Bit-System verknüpft, aber in 32-Bit-Assembly geschrieben werden kann? Es muss nichts tun. Einfach kompilieren und ohne Absturz ausführen. Das wäre großartig. –

3

Es ist möglich, 32-Bit-Assembly unter 64-Bit-Windows zu schreiben, zu assemblieren und auszuführen. Ich habe auf meinem Windows 7 x64-Rechner einige Utilities in masm32 geschrieben. Wenn Sie 64-Bit-Code zusammenstellen möchten, unterstützt FASM 64-Bit-Objektcode.