Microsoft Macro Assembler
Microsoft Macro Assembler (MASM) – asembler x86, który używa składni Intela dla MS-DOS i Microsoft Windows. Począwszy od MASM 8.0, istnieją dwie wersje asemblera: jedna dla 16-bitowych i 32-bitowych źródeł zestawu, a druga (ML64) tylko dla źródeł 64-bitowych.
MASM jest nadal wspierany przez Microsoft, ale od wersji 6.12 nie był sprzedawany jako oddzielny produkt. Zamiast tego jest dostarczany z różnymi zestawami deweloperskimi i kompilatorami C. Najnowsze wersje MASM są dołączone do programu Microsoft Visual Studio.
Historia
edytujNajwcześniejsze wersje MASM pochodzą z 1981 roku[1]. Były sprzedawane na rynku pod nazwą „Microsoft Macro Assembler”, dostępny był dla wszystkich maszyn x86 lub jako wersja OEM specjalnie dla komputerów IBM PC. W wersji 4.0 wydanie IBM zostało wycofane. Do wersji 3.0 MASM był również dołączany do mniejszego pomocniczego asemblera, ASM.EXE. Było to przeznaczone dla komputerów PC z tylko 64k pamięci i brakowało w nim niektórych funkcji pełnego MASM, takich jak możliwość używania makr w kodzie.
Wersje MS-DOS do 4.x zawierały narzędzie Microsoft LINK, które zostało zaprojektowane do konwersji pośrednich plików OBJ generowanych przez MASM i inne kompilatory. Jednak narzędzie zostało usunięte ze względu na to, że niektórzy użytkownicy, którzy nie programowali byli zmuszani do posiadania narzędzi na komputerze, co zmniejszało pojemność na dane.
Wersja 4.0 dodała obsługę 286 instrukcji, a także skrócone mnemoniki dla deskryptorów segmentów (.code, .data itp.). Wersja 5.0 obsługuje 386 instrukcji, ale nadal może generować tylko pliki wykonywalne w trybie rzeczywistym.
W wersji 5.0 MASM był dostępny tylko jako aplikacja MS-DOS. Wersje 5.1 i 6.0 były dostępne zarówno jako aplikacje MS-DOS, jak i OS/2.
Wersja 6.0, wydana w 1992 roku, dodała między innymi przekazywanie parametrów za pomocą invoke
i kilka innych konstrukcji podobnych do wysokiego poziomu, oprócz już istniejących rekordów podobnych do wysokiego poziomu. Do końca roku wersja 6.1A zaktualizowała zarządzanie pamięcią, aby była kompatybilna z kodem tworzonym przez Visual C++. W 1993 roku dodano pełne wsparcie dla 32-bitowych aplikacji w trybie chronionym oraz zestaw instrukcji Intela Pentium. W tym czasie plik binarny MASM był wysyłany jako plik binarny z rozszerzeniem DOS.
Wersje od 6.12 do 6.14 zostały zaimplementowane jako poprawki do wersji 6.11. Te poprawki zmieniły typ formatu binarnego na natywny PE. Wersja 6.11 to ostatnia wersja MASM, która będzie działać w systemie MS-DOS[2].
Pod koniec 1997 roku MASM w pełni obsługiwał system Windows 95 i zawierał pewne instrukcje specyficzne dla AMD.
W 1999 roku Intel wypuścił makra dla instrukcji SIMD i MMX, które wkrótce potem były natywnie obsługiwane przez MASM. Wraz z wydaniem 6.15 w 2000 r. Microsoft zaprzestał obsługi MASM jako oddzielnego produktu, zamiast tego włączał go do zestawu narzędzi Visual Studio. Chociaż nadal był zgodny z systemem Windows 98, obecne wersje programu Visual Studio nie były. Obsługa procesorów 64-bitowych została dodana dopiero po wydaniu programu Visual Studio 2005 z MASM 8.0.
Po 25 czerwca 2015 r. Istnieją co najmniej trzy różne MASM o numerze wersji 14.00.23026. W programie Microsoft Visual Studio 2015 Enterprise Edition jest jeden plik „amd64_x86” ml i dwa ml64, „x86_amd64” i „amd64”. Działają na różnych platformach przeznaczonych dla różnych platform:
- amd64_x86: generuje 64-bitowy kod, uruchamia się w środowisku 32-bitowym.
- x86_amd64: generuje 32-bitowy kod, uruchamia się w środowisku 64-bitowym.
- amd64: generuje 64-bitowy kod, uruchamia się w środowisku 64-bitowym.
Pozostałe asemblery kompatybilne z MASM
edytujWiele więcej asemblerów potrafi przetworzyć kod napisany dla MASM, z wyjątkiem większości złożonych makr.
- Turbo Assembler (TASM) opracowany przez firmę Borland, później należący do Embarcadero, ostatnio zaktualizowany w 2002 roku, ale nadal dostarczany z C++ Builder i RAD Studio.
- JWASM Macro Assembler, trzyma się zasad licencjonowania Sybase Open Watcom EULA.
- Pelle’s Macro Assembler, jeden z komponentów Pelles C, czyli środowiska programistycznego.
- UASM jest darmowym i kompatybilnym z MASM asemblerem bazowanym początkowo na JWASM.
Wsparcie dla łączenia wielu języków
edytujDokumentacja z roku 1987 w wersji 5.1 wprowadziła wsparcie dla języków wysokiego poziomu typu Microsoft BASIC, C, FORTRAN, Pascal.
Licencjonowanie
edytujUżywanie MASM do rozwoju systemu operacyjnego nie jest zabronione w umowie licencyjnej, chociaż czasami możesz to usłyszeć. Dzieje się tak, ponieważ ludzie często mylą licencje MASM i MASM32, są to dwa niepowiązane ze sobą projekty.
Zobacz też
edytujPrzypisy
edytuj- ↑ IBM Macro Assembler 1.00 [online], WinWorld [dostęp 2020-10-02] .
- ↑ Microsoft Macro Assembler 6.x [online], WinWorld [dostęp 2020-10-02] .