NASM vs. FASM vs. YASM, was sind die Vor- und Nachteile dieser 3 Assembler?
-
nimm NASM,der ist glaub ich der bessere von allen, die du aufgezählt hast
-
Und warum ist der besser?
-
weil er besser ist
-
und wieso?
-
Ist so. Meine Vernunft sagt das mir.
-
Du kannst auch den as nehmen.
Es gibt zwar weniger Einführungen dafür, er ist aber genauso leistungsstark wie die Anderen und auf jedem Unixsystem standardmäßig dabei.
Die Syntax(AT&T) ist auch anders, aber NUR anders und nicht schlechter.
Hat halt auch den Vorteil, dass der gcc, wenn er den Assemblercode zu deinem Programm mit ausspucken soll (Option -S), die AT&T-Syntax verwendet.Der YASM ist glaube ich nur ein Nachbau des NASM. So nebenbei.
Also nimm den as.
-
NASM und FASM sind beides sehr gute und etwa gleichwertige Assembler. Ich persönlich nutze FASM, da ich gelegentlich WinAPI-Anwendungen in Assembler schreibe. Und dafür eignet sich FASM eindeutig besser. Außerdem ist FASM komplett in Assembler geschrieben, wodurch das Programm schnell und klein ist.
Yasm wurde eigentlich hauptsächlich von NASM Benutzern verwendet, die 64bit Programme schreiben wollten (denn von NASM gab es lange Zeit keine 64bit Version).
-
Overflow schrieb:
Yasm wurde eigentlich hauptsächlich von NASM Benutzern verwendet, die 64bit Programme schreiben wollten (denn von NASM gab es lange Zeit keine 64bit Version).
Hat sich dieses Problem inzwischen erledigt?
Also kann NASM jetzt 64 Bit und braucht man YASM jetzt noch?
-
Jup, NASM unterstuetzt AFAIK schon eine ganze Weile auch 64Bit.
YASMs preprocessor ist aber, glaube ich, noch etwas umfangreicher als der von NASM. Dafuer unterstuetzt YASM AFAIR weniger Ausgabeformate...
Details kenne ich allerdings auch nicht - genausowenig kann ich diese beiden Assembler mit FASM vergleichen. Ich finde nur, dass sich auch in NASM ganz gut Win32-Anwendungen schreiben lassen.
-
Nobuo T schrieb:
Ich finde nur, dass sich auch in NASM ganz gut Win32-Anwendungen schreiben lassen.
Für Win32-Anwendungen würde ich aber eindeutig FASM empfehlen. Es ist mit NASM möglich, aber schön finde ich das nicht. Besonders wenn man sich mit dem PE-Format beschäftigt hat, fühlt man sich mit FASM wohl. Man kann einfach viel direkter in das Format eingreifen. Als Beispiel mal die Deklaration der Import-Section:
section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' import kernel32,\ ExitProcess,'ExitProcess' import user32,\ MessageBox,'MessageBoxA'
Eine so schöne und PE-nahe Implementation haben andere Assembler meiner Meinung nach nicht. Außerdem bringt FASM auch viele fertige Macros mit, wodruch die Win32-Programmierung wie z.B. bei MASM deutlich komfortabler wird.