Asembler makr firmy Microsoft
Deweloperzy | Microsoftu |
---|---|
Pierwsze wydanie | 1981 |
Wersja stabilna | 14.16.27023.1 / 7 marca 2017
|
System operacyjny | Microsoft Windows i MS-DOS |
Typ | Monter |
Licencja | Komercyjne oprogramowanie własnościowe |
Strona internetowa |
Microsoft Macro Assembler ( MASM ) to 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ł asemblera, a druga ( ML64 ) tylko dla źródeł 64-bitowych .
MASM jest utrzymywany przez firmę Microsoft , ale od wersji 6.12 nie jest sprzedawany jako osobny produkt. Zamiast tego jest dostarczany z różnymi pakietami Microsoft SDK i kompilatorami C. Najnowsze wersje MASM są dołączone do Microsoft Visual Studio .
Godne uwagi aplikacje napisane w MASM to RollerCoaster Tycoon , który został w 99% napisany w MASM.
Historia
Najwcześniejsze wersje MASM pochodzą z 1981 roku. Były sprzedawane jako ogólny „Microsoft Macro Assembler” dla wszystkich maszyn x86 lub jako wersja OEM specjalnie dla komputerów IBM PC . W wersji 4.0 wersja IBM została usunięta. Do wersji 3.0 MASM był również dołączany do mniejszego asemblera towarzyszącego, ASM.EXE. Było to przeznaczone dla komputerów PC z zaledwie 64 KB pamięci i brakowało mu niektórych funkcji pełnego MASM, takich jak możliwość korzystania z makr kodu.
Wersje MS-DOS do 4.x zawierały narzędzie LINK firmy Microsoft, które zostało zaprojektowane do konwersji pośrednich plików OBJ generowanych przez MASM i inne kompilatory; jednakże, ponieważ użytkownicy, którzy nie programowali, nie korzystali z tego narzędzia, zostało ono przeniesione do ich pakietów kompilatorów.
Wersja 4.0 dodała obsługę instrukcji 286, a także skróconą mnemonik dla deskryptorów segmentów (.code, .data itp.). Wersja 5.0 obsługiwała instrukcje 386, ale nadal mogła generować tylko pliki wykonywalne w trybie rzeczywistym.
Do 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 MS-DOS, jak i OS / 2 .
Wersja 6.0, wydana w 1992 roku, dodała przekazywanie parametrów za pomocą „invoke” i kilka innych konstrukcji podobnych do wysokiego poziomu, oprócz między innymi już istniejących rekordów podobnych do wysokiego poziomu. Do końca roku wersja 6.1A zaktualizowała zarządzanie pamięcią [ jak? ] [ wymagane wyjaśnienie ] , aby był zgodny z kodem tworzonym przez Visual C++ . W 1993 roku pełne wsparcie dla aplikacji 32-bitowych w trybie chronionym i Pentium dodano zestaw instrukcji. Plik binarny MASM w tamtym czasie był dostarczany jako „bimodalny” plik binarny z rozszerzeniem DOS (przy użyciu Phar Lap TNT DOS).
Wersje od 6.12 do 6.14 zostały zaimplementowane jako poprawki do wersji 6.11. Te łatki zmieniły typ formatu binarnego na natywny PE . Wersja 6.11 to ostatnia wersja MASM, która będzie działać pod MS-DOS.
Do końca 1997 roku MASM w pełni wspierał 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łączył go do zestawu Visual Studio . Chociaż nadal był zgodny z Windows 98 , obecne wersje Visual Studio nie były. Obsługa procesorów 64-bitowych została dodana dopiero w wydaniu Visual Studio 2005 wraz z MASM 8.0.
Po 25 czerwca 2015 r. istnieją co najmniej trzy różne MASM o numerze wersji 14.00.23026. W Microsoft Visual Studio 2015 Enterprise Edition jest jeden „amd64_x86” ml i dwa ml64, „x86_amd64” i „amd64”. Działają na różnych platformach skierowanych na różne platformy:
- amd64_x86: generuje 64-bitowy kod, działa w 32-bitowym środowisku Windows
- x86_amd64: generuje 32-bitowy kod, działa w 64-bitowym środowisku Windows
- amd64: generuje 64-bitowy kod, działa w 64-bitowym środowisku Windows
Formaty modułów obiektowych obsługiwane przez MASM
Wczesne wersje modułów obiektowych generowanych przez MASM przy użyciu formatu OMF , który był używany do tworzenia plików binarnych dla MS-DOS lub OS/2 .
Od wersji 6.1 MASM może tworzyć moduły obiektowe w formacie Portable Executable (PE/COFF). PE/COFF jest kompatybilny z najnowszymi kompilatorami C firmy Microsoft, a moduły obiektowe tworzone przez MASM lub kompilator C można rutynowo mieszać i łączyć w pliki binarne Win32 i Win64.
Asemblery kompatybilne z MASM
Niektóre inne asemblery mogą składać większość kodu napisanego dla MASM, z wyjątkiem bardziej 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, licencjonowany w ramach Sybase Open Watcom EULA. Ostatnia aktualizacja w 2014 roku.
- Pelle's Macro Assembler, komponent Pelles C Archived 2020-02-29 w środowisku programistycznym Wayback Machine .
- UASM to darmowy asembler kompatybilny z MASM oparty na JWasm.
- ASMC to darmowy asembler zgodny z MASM, oparty na JWasm.
Obsługa programowania w językach mieszanych
Dokumentacja wersji 5.1 z 1987 r. zawierała obsługę „Microsoft BASIC, C, FORTRAN, Pascal”.