FASM (od ang. flat assembler, „płaski asembler”) – szybki i wydajny asembler dla systemów: DOS, Windows oraz zgodnych z Uniksem takich jak Linux (natywna wersja) czy systemy z rodziny BSD (wersja wykorzystująca standardową bibliotekę libc).

Został opracowany przez Tomasza Grysztara, jest programem darmowym i wolnym, opartym na licencji BSD z zastrzeżeniem, że nie może być zmieniona na inną (np. GNU GPL – formalnie licencja BSD nie stawia takiego wymogu). Obecnie obsługuje wszystkie instrukcje procesorów 8080-80486/Pentium wraz z rozszerzeniami MMX, 3DNow!, SSE, SSE2, SSE3, SSSE3, SSE4, AVX, AVX2 oraz XOPDokumentacja online flat asemblera Programmer’s Manual (2.1).. Ponadto rozpoznaje instrukcje ze zbiorów VMX, SVM, SMX, XSAVE, RDRAND, FSGSBASE, INVPCID, HLE, RTM. Generuje kod w architekturze 16-bitowej, 32-bitowej i 64-bitowej (zarówno AMD64 i EM64T).

Potrafi generować kod maszynowy, jak również kod w formatach MZ, PE, COFF i ELF. Zawiera rozbudowany język makroinstrukcji, określający nie tylko budowę kodu, ale także sposób jego generowania (stąd praktyczny brak opcji w wierszu poleceń) w myśl zasady „ten sam plik – ten sam wynik”. Rozmiar kodu wynikowego jest optymalizowany dzięki wieloprzebiegowemu procesowi asemblacji.

FASM jest cały czas aktywnie rozwijany. Ma stosunkowo dużą i aktywną grupę użytkowników, którzy uczestniczą w jego rozwoju oraz wymieniają się wzajemnie doświadczeniem w programowaniu niskopoziomowym. Powstaje również jego port na architekturę ARMFASMARM., a także jest wykorzystywany przy tworzeniu systemu operacyjnego MenuetOS, pisanego wyłącznie w asemblerze.

Przypisy

Linki zewnętrzne flatassembler.net strona główna projektu

Kategoria:Asembler