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).

FASM
Pojawienie się

1999

Twórca

Tomasz Grysztar

Licencja

2 klauzulowa Licencja BSD z dodatkiem Copyleftu

Platforma sprzętowa

x86, x64, ARM

Platforma systemowa

wieloplatformowy

Strona internetowa

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 XOP[1]. Ponadto rozpoznaje instrukcje ze zbiorów VMX, SVM, SMX, XSAVE, RDRAND, FSGSBASE, INVPCID, HLE, RTM[1]. 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ę ARM[2], a także jest wykorzystywany przy tworzeniu systemu operacyjnego MenuetOS, pisanego wyłącznie w asemblerze.

Przypisy edytuj

  1. a b Dokumentacja online flat asemblera Programmer’s Manual (2.1).
  2. FASMARM.

Linki zewnętrzne edytuj