Ассемблер макросов Microsoft - Microsoft Macro Assembler

Ассемблер макросов Microsoft
Разработчики) Microsoft
Первый выпуск 1981 ; 40 лет назад ( 1981 )
Стабильный выпуск
14.16.27023.1 / 7 марта 2017 г . ; 4 года назад ( 2017-03-07 )
Операционная система Microsoft Windows и MS-DOS
Тип Ассемблер
Лицензия Коммерческое проприетарное программное обеспечение
Веб-сайт документы .microsoft .com / EN-US / CPP / ассемблер / MASM / Microsoft-макро-ассемблер ссылка

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; это два независимых проекта.

Смотрите также

использованная литература

внешние ссылки