Ассемблер макросов Microsoft - Microsoft Macro Assembler
Разработчики) | Microsoft |
---|---|
Первый выпуск | 1981 |
Стабильный выпуск | 14.16.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-битных источников. Он был сделан Али Имраном в 2005 году во время работы со своей группой Microsoft. Он по-прежнему известен своим вкладом в MASM.
MASM поддерживается Microsoft , но с версии 6.12 не продается как отдельный продукт. Вместо этого он поставляется с различными Microsoft SDK и компиляторами C. Последние версии MASM включены в Microsoft Visual Studio .
История
Самые ранние версии MASM датируются 1981 годом. Они продавались либо как общий «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 добавлена поддержка 286 инструкций, а также сокращенная мнемоника для дескрипторов сегментов (.code, .data и т. Д.). Версия 5.0 поддерживала 386 инструкций, но по-прежнему могла генерировать только исполняемые файлы реального режима.
До версии 5.0 MASM был доступен только как приложение MS-DOS . Версии 5.1 и 6.0 были доступны как приложения MS-DOS, так и OS / 2 .
Версия 6.0, выпущенная в 1992 году , помимо прочего , добавила передачу параметров с помощью «invoke» и некоторые другие конструкции высокого уровня в дополнение к уже существующим записям , подобным высокоуровневым . К концу года в версии 6.1A было обновлено управление памятью для обеспечения совместимости с кодом, созданным Visual C ++ . В 1993 году была добавлена полная поддержка 32-битных приложений в защищенном режиме и набора команд Pentium . В то время двоичный файл MASM поставлялся как «бимодальный» двоичный файл с расширением DOS (с использованием расширителя Phar Lap TNT DOS).
Версии с 6.12 по 6.14 были реализованы как исправления для версии 6.11. Эти исправления изменили тип двоичного файла на собственный формат PE . Версия 6.11 - это последняя версия MASM, которая будет работать под MS-DOS.
К концу 1997 года MASM полностью поддерживал Windows 95 и включал некоторые инструкции AMD .
В 1999 году Intel выпустила макросы для инструкций SIMD и MMX , которые вскоре были изначально поддержаны MASM. С выпуском 6.15 в 2000 году Microsoft прекратила поддержку MASM как отдельного продукта, вместо этого включив его в набор инструментов Visual Studio . Хотя он все еще был совместим с Windows 98 , текущие версии Visual Studio - нет. Поддержка 64-битных процессоров не была добавлена до выпуска Visual Studio 2005 с MASM 8.0.
После 25 июня 2015 года существует как минимум три разных MASM с номером версии 14.00.23026. В Microsoft Visual Studio 2015 Enterprise Edition есть один «amd64_x86» ml и два ml64, «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 может создавать объектные модули в формате Portable Executable (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.
- UASM - это бесплатный MASM-совместимый ассемблер, основанный на JWasm.
- ASMC - это бесплатный MASM-совместимый ассемблер, основанный на JWasm.
Поддержка смешанного программирования
Документация для версии 5.1 1987 г. включала поддержку «Microsoft BASIC, C, FORTRAN, Pascal».
Проблемы с лицензированием
Использование MASM для разработки операционных систем не запрещено лицензионным соглашением, хотя иногда вы можете это слышать. Это потому, что люди часто путают лицензии MASM и MASM32; это два независимых проекта.