Software-Empfehlung für einen MASM-Compiler

Software-Empfehlung für einen MASM-Compiler

Ich suche nach einemMASMCompiler für Ubuntu. Ich habe alle meine Entwicklungstools auf Ubuntu umgestellt. Jetzt besuche ich einen MASM-Kurs und brauche dringend einen MASM-Compiler. Ich habe einigeVideos auf YouTube. Sie verwenden meistens einen DOS-Emulator und installieren dort den MASM-Compiler. So etwas finde ich nicht wirklich toll.

Hier ist, wonach ich suche:

  • Im Idealfall enthält es einige Protokolle zur Fehlerbehebung bei meinen Programmen.

  • Eine grafische Benutzeroberfläche ist ein Plus, aber ich brauche sie nicht.

  • Mir wäre es lieber, wenn der Compiler keine Windows-Emulation wäre (er müsste WineHQ nicht verwenden).

Ich verwende derzeit Sublime Text mit einem MASM-Paket und brauche daher keine IDE. Wenn Ihre Lösung jedoch eine IDE ist, wäre das auch in Ordnung, vielleicht als leichte Alternative zu Visual Studio.

Was wäre unter diesen Umständen ein guter MASM-Compiler?

Antwort1

Ich würde jwasm vorschlagen (aufQuelleschmiedeund weiterGoogle-Code)

Die Google-Seite listet viele Alternativen auf und zeigt auch, warum jwasm besser ist als diese. Unten finden Sie eine direkte Kopie der Google-Codeseite, damit Sie einen guten Vorschlag und alternative Programme erhalten. Sie müssen sie ausprobieren, um zu entscheiden, was für Sie funktioniert. JWasm funktioniert unter Linux; alle anderen möglicherweise nicht.

Abonnieren

Merkmale

  • Frei.
  • native Unterstützung für die Ausgabeformate Intel OMF, MS Coff (32 und 64 Bit), Elf (32 und 64 Bit), Bin und DOS MZ.
  • Vorkompilierte JWasm-Binärdateien sind für DOS, Windows und Linux verfügbar. Für OS/2 und FreeBSD werden Makefiles mitgeliefert.
  • Es werden Anweisungen bis zu SSE4.2 unterstützt.
  • JWasm ist in C geschrieben. Der Quellcode ist portierbar und wurde erfolgreich mit Open Watcom, MS VC, GCC und mehr getestet.
  • Der Quellcode von JWasm wird unter der Sybase Open Watcom Public License veröffentlicht, die eine kostenlose kommerzielle und nichtkommerzielle Nutzung erlaubt.

Im Vergleich zu anderen Assemblern

MASM

  • JWasm ist kostenlos, hat keine künstlichen Lizenzbeschränkungen und kann zum Erstellen von Binärdateien für jedes Betriebssystem verwendet werden.
  • JWasm ist Open Source, vergessen Sie die lästigen MASM-Bugs ...
  • Weitere Ausgabeformate werden unterstützt (Bin, ELF).
  • Optional können sehr kleine Objektmodule erstellt werden
  • Bessere Unterstützung für Open Watcom, zum Beispiel die registerbasierte Aufrufkonvention
  • JWasm ist schneller als Masm.

TASM

  • JWasm ist verfügbar. TASM ist nicht legal verfügbar. Und LZASM, eine Art TASM-Klon, versteht nur den IDEAL-Modus.
  • JWasm bietet volle Unterstützung für STRUCTs und UNIONs. TASM weist in diesem Bereich erhebliche Einschränkungen und Fehler auf.
  • JWasm unterstützt praktisch alle MASM v6-Funktionen (PROTO, INVOKE, hll-Direktiven, ...), von denen TASM die meisten nicht versteht.
  • JWasm unterstützt Anweisungen bis zu SSE4, TASM liegt dahinter.

POASM

  • JWasm ist Open Source
  • JWasm unterstützt zusätzlich die Ausgabe im OMF-, ELF- und Binärformat
  • JWasm unterstützt 16-Bit- und segmentierte Speichermodelle. POASM versteht nur FLAT.
  • JWasm ist mit der Makroimplementierung von MASM kompatibel. POASM ist dies nicht.
  • POASM verfügt nicht über die Fähigkeit, eine Listing-Datei zu erstellen.

WASM

  • Die Makrofunktionen von JWasm sind viel besser als die von Wasm.
  • JWasm unterstützt die Masm v6-Syntax vollständig. In Wasm fehlen die meisten in Masm v6 vorgenommenen Ergänzungen.
  • Neben OMF unterstützt JWasm COFF, ELF und binäre Ausgabeformate. JWasm unterstützt 64-Bit.

Antwort2

Ich denke, es ist wichtig darauf hinzuweisen, dass jwasm keine Unterstützung für POSIX-basierte Aufrufkonventionen (Systeme wie System V) bietet. Wenn Sie also Funktionen wie Proto/Procs mit Parametern verwenden möchten, beachten Sie, dass diese Parameter von den C/C++-Compilern über die Register übergeben werden. jwasm verwendet jedoch nicht die richtigen Register, sondern den Stack als Parameter, sodass Sie die Parameternamen auf der 64-Bit-Architektur nicht wie üblich verwenden können.

verwandte Informationen