Microsoft Макро Ассемблер
Разработчик(и) | Майкрософт |
---|---|
Первоначальный выпуск | 1981 год |
Стабильная версия | 16.14.27023.1 / 7 марта 2017 г |
Операционная система | Microsoft Windows и MS-DOS |
Тип | Ассемблер |
Лицензия | Коммерческое проприетарное программное обеспечение |
Веб-сайт | документы |
Microsoft Macro Assembler ( MASM ) — это x86 ассемблер , использующий синтаксис Intel для MS-DOS и Microsoft Windows . Начиная с MASM 8.0, существуют две версии ассемблера: одна для 16-битных и 32-битных исходных кодов сборки, а другая ( ML64 ) только для 64-битных исходных кодов.
MASM поддерживается Microsoft , но начиная с версии 6.12 он не продается как отдельный продукт. Вместо этого он поставляется с различными SDK и C. компиляторами Microsoft Последние версии MASM включены в состав Microsoft Visual Studio .
Известными приложениями, скомпилированными с использованием MASM, являются RollerCoaster Tycoon , который на 99% написан на ассемблере и создан с использованием MASM. [1]
История
[ редактировать ]Самые ранние версии MASM датируются 1981 годом. [2] Они продавались либо как универсальный «Microsoft Macro Assembler» для всех компьютеров x86, либо как OEM-версия специально для IBM PC . В версии 4.0 выпуск IBM был исключен. До версии 3.0 MASM также поставлялся в комплекте с меньшим сопутствующим ассемблером ASM.EXE. Он был предназначен для компьютеров с объемом памяти всего 64 КБ и в нем отсутствовали некоторые функции полной версии MASM, такие как возможность использования макросов кода.
Версии MS-DOS до 4.x включали утилиту Microsoft LINK, которая была разработана для преобразования промежуточных файлов OBJ, созданных MASM и другими компиляторами; однако, поскольку пользователи, которые не программировали, не использовали эту утилиту, она была перенесена в их пакеты компилятора.
Версия 4.0, выпущенная в октябре 1985 года, добавила поддержку 286 инструкций.
Версия 5.0, выпущенная в августе 1987 года, поддерживала 386 инструкций, а также сокращенную мнемонику для дескрипторов сегментов (.code, .data и т. д.), но по-прежнему могла генерировать только исполняемые файлы реального режима.
До версии 5.0 MASM был доступен только как приложение MS-DOS . Версии 5.1 и 6.0 были доступны как приложения MS-DOS и OS/2 . [3]
, добавила передачу параметров с помощью «invoke» и некоторых других конструкций высокого уровня в дополнение к уже существующим записям Версия 6.0, выпущенная в 1991 году, среди прочего высокого уровня. И 6.0, и 6.0B могли работать на процессоре 8086 , но могли генерировать простой 32-битный код 386. В 1992 году была выпущена версия 6.1, в которой добавлена поддержка формата объектов COFF, используемого Windows NT , и удалена поддержка OS/2. Версия 6.1 была создана как бимодальный двоичный файл до завершения разработки API Win32 и несовместима с работой в Windows NT из-за отсутствия экспорта. [4]
В 1993 году была добавлена полная поддержка 32-битных приложений защищенного режима и набора команд Pentium . Двоичный файл MASM 6.11 в то время (1993 г.) поставлялся как «бимодальный» (win32, т.е. PE ) двоичный файл, расширенный DOS (с использованием расширителя DOS Phar Lap TNT). Однако файл setup.exe — это исполняемый файл MZ, поэтому он не будет работать в 64-разрядных версиях Windows, а бимодальный файл ml.exe сжат , а decomp.exe — это исполняемый файл NE, поэтому он также не запустится. в 64-битных версиях Windows (если вы надеялись вручную извлечь необходимые ml.exe и ml.err), поэтому для его установки вам фактически потребуется доступ к 32-битной Windows (или MSDOS). Версия 6.11 — последняя версия MASM, работающая под управлением MS-DOS. Был доступен ряд патчей , вплоть до 6.11d, для работы которых требовалась 32-битная Windows, но исправленный ml.exe все еще имеет расширитель Phar Lap dos, поэтому его все еще можно запускать под MSDOS.
Версии с 6.12 по 6.14 были реализованы как исправления для версии 6.11. Эти патчи представляли собой самораспаковывающиеся исполняемые файлы PK (т. е. MSDOS), поэтому не работали под 64-битной Windows. Даже если вы извлекаете их другими способами, patch.exe является исполняемым файлом NE, поэтому его нельзя будет запустить в 64-битной Windows для обновления ml.exe. Если вы работаете в 32-битной версии Windows (или более ранней версии), патч удалит расширитель Phar Lap dos из ml.exe, и его больше нельзя будет запустить в MSDOS. Удаление Phar Lap делает часть MZ исполняемого файла меньше, так что подпись «PE» становится более заметной, в отличие от ситуации с версией 6.11, где подпись PE находилась далеко в файле.
К концу 1997 года MASM полностью поддерживал Windows 95 и включал некоторые инструкции, специфичные для AMD . [5]
В 1999 году Intel выпустила макросы для инструкций SIMD и MMX , которые вскоре после этого стали поддерживаться MASM. С выпуском 6.15 в 2000 году Microsoft прекратила поддержку MASM как отдельного продукта, вместо этого включив его в набор инструментов Visual Studio . Хотя он по-прежнему был совместим с Windows 98 , текущие версии Visual Studio — нет. [5] Поддержка 64-битных процессоров не добавлялась до выпуска Visual Studio 2005 с MASM 8.0.
После 25 июня 2015 г. существует как минимум три разных MASM с номером версии 14.00.23026. В Microsoft Visual Studio 2015 Enterprise Edition имеется один мл «amd64_x86» и два мл64: «x86_amd64» и «amd64». Они работают на разных платформах и ориентированы на разные платформы:
- amd64_x86: генерирует 64-битный код, работает в 32-битной среде Windows.
- x86_amd64: генерирует 32-битный код, работает в 64-битной среде Windows.
- amd64: генерирует 64-битный код, работает в 64-битной среде Windows.
Форматы объектных модулей, поддерживаемые MASM
[ редактировать ]Ранние версии MASM создавали объектные модули с использованием формата OMF , который использовался для создания двоичных файлов для MS-DOS или OS/2 .
Начиная с версии 6.1, MASM может создавать объектные модули в переносимом исполняемом файле. [6] [7] (PE/COFF) формат. PE/COFF совместим с последними компиляторами Microsoft C, а объектные модули, созданные MASM или компилятором C, можно регулярно смешивать и компоновать в двоичные файлы Win32 и Win64.
Ассемблеры, совместимые с MASM
[ редактировать ]Некоторые другие ассемблеры могут собирать большую часть кода, написанного для MASM, за исключением более сложных макросов.
- Turbo Assembler (TASM), разработанный Borland , позже принадлежавший Embarcadero, последний раз обновлялся в 2002 году, но до сих пор поставляется с C++Builder и RAD Studio .
- JWasm Macro Assembler, лицензированный в соответствии с лицензией Sybase Open Watcom EULA . Последнее обновление: 2014 г.
- Макросассемблер Pelle, компонент Pelles C. Архивировано 29 февраля 2020 г. в среде разработки Wayback Machine .
- UASM — бесплатный MASM-совместимый ассемблер, основанный на JWasm.
- ASMC — это бесплатный MASM-совместимый ассемблер, основанный на JWasm.
Поддержка смешанного языкового программирования
[ редактировать ]Документация для версии 5.1 1987 года включала поддержку « Microsoft BASIC , C, FORTRAN , Pascal ». [8]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Разработка программного обеспечения Криса Сойера» . www.chrissawyergames.com . Проверено 5 января 2023 г.
- ^ Ватт, Пегги; Кристин МакГивер (7 января 1985 г.). «Macintosh против IBM PC через год» . Инфомир . Том. 7, нет. 1. С. 15–16. ISSN 0199-6649 . Макроассемблер IBM PC был выпущен в декабре 1981 года.
- ^ Маршалл, Мартин (29 апреля 1991 г.). «Обновление макроассемблера добавляет функции высокого уровня» . Инфомир . Том. 13, нет. 17. с. 21. ISSN 0199-6649 .
- ^ «Q94314: Код MASM модели 32-битной плоской памяти для Windows NT» . Архивировано из оригинала 13 января 2021 года . Проверено 3 октября 2023 г.
- ^ Jump up to: а б Р.Э. Харви (2007). «Ассемблеры» . Архивировано из оригинала 16 февраля 2008 года . Проверено 4 февраля 2010 г.
- ^ «Архивная копия» . Архивировано из оригинала 26 января 2009 г. Проверено 24 июня 2008 г.
{{cite web}}
: CS1 maint: архивная копия в заголовке ( ссылка ) - ^ «Белые книги и документация ВСБМ» . Майкрософт . Проверено 25 сентября 2016 г.
- ^ Microsoft Macro Assembler 5.1, Руководство по программированию на смешанных языках . п. 3.