Asembler makr firmy Microsoft

Asembler makr firmy Microsoft
Deweloperzy Microsoftu
Pierwsze wydanie 1981 ; 42 lata temu ( 1981 )
Wersja stabilna
14.16.27023.1 / 7 marca 2017 ; 5 lat temu ( 07.03.2017 )
System operacyjny Microsoft Windows i MS-DOS
Typ Monter
Licencja Komercyjne oprogramowanie własnościowe
Strona internetowa docs .microsoft .com /en-us /cpp /assembler /masm /microsoft-macro-assembler-reference

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

Zobacz też

Linki zewnętrzne