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

Ассемблер макросов Microsoft
Разработчики)Microsoft
изначальный выпуск1981; 39 лет назад (1981)
Стабильный выпуск
14.16.27023.1 / 7 марта 2017 г.; 3 года назад (2017-03-07)
Операционная системаМайкрософт Виндоус и MS-DOS
ТипАссемблер
ЛицензияКоммерческий проприетарное программное обеспечение
Интернет сайтдокументы.microsoft.com/ en-us/ cpp/ ассемблер/ masm/ Microsoft-макрос-ассемблер-справочник

В Ассемблер макросов Microsoft (MASM) является x86 ассемблер который использует Синтаксис Intel за MS-DOS и Майкрософт Виндоус. Начиная с MASM 8.0, существует две версии ассемблера: одна для 16 бит & 32-битный исходники сборки, и еще (ML64) за 64-битный только источники.

MASM поддерживается Microsoft, но с версии 6.12 не продавался как отдельный продукт. Вместо этого он поставляется с различными Microsoft SDK и C компиляторы. Последние версии MASM включены в Microsoft Visual Studio.

История

Самые ранние версии MASM относятся к 1981 году.[1] Они продавались либо как общий «Microsoft Macro Assembler» для всех машин x86, либо как OEM-версия специально для ПК IBM. К Версии 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 Приложения.[2]

Версия 6.0, выпущенная в 1992 году, добавила передачу параметров с «invoke» и некоторые другие конструкции высокого уровня в дополнение к уже существующим подобным высоким уровням записи, среди прочего. К концу года в версии 6.1А обновлено управление памятью[как? ][требуется разъяснение ] быть совместимым с кодом, созданным 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 -конкретные инструкции.[3]

В 1999 году Intel выпустила макросы для SIMD и MMX инструкции, которые вскоре после этого были изначально поддержаны MASM. С выпуском 6.15 в 2000 году Microsoft прекратила поддержку MASM как отдельного продукта, вместо этого включив его в Visual Studio набор инструментов. Хотя он все еще был совместим с Windows 98, текущих версий Visual Studio не было.[3] Поддержка 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 может создавать объектные модули в Переносимый исполняемый файл[4][5] (PE / COFF) формат. PE / COFF совместим с новейшими компиляторами Microsoft C, а объектные модули, созданные MASM или компилятором C, можно регулярно смешивать и связывать с двоичными файлами Win32 и Win64.

Ассемблеры, совместимые с MASM

Некоторые другие ассемблеры могут собрать большую часть кода, написанного для MASM, за исключением более сложных макросов.

  • Турбо Ассемблер (TASM), разработанный Borland, позже принадлежавший Embarcadero, последний раз обновлявшийся в 2002 году, но все еще поставляемый с C ++ Builder и РАД Студия.
  • JWASM Macro Assembler, под лицензией Sybase Open Watcom EULA.
  • Макроассемблер Pelle, компонент Пеллес С среда разработки.
  • UASM это бесплатный MASM-совместимый ассемблер, основанный на JWasm.

Поддержка смешанного программирования

Документация для версии 5.1 1987 г. включала поддержку «Microsoft BASIC, C, FORTRAN, Pascal».[6]

Проблемы с лицензированием

Использование MASM для разработки операционных систем не запрещено лицензионным соглашением, хотя иногда вы можете это слышать. Это потому, что люди часто путают лицензии MASM и MASM32; это два не связанных между собой проекта.

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

Рекомендации

  1. ^ Ватт, Пегги; Кристин МакГивер (7 января 1985 г.). «Macintosh против IBM PC через год». InfoWorld. Vol. 7 нет. 1. С. 15–16. ISSN  0199-6649. IBM PC Macro Assembler был выпущен в декабре 1981 года.
  2. ^ Маршалл, Мартин (29 апреля 1991 г.). «Обновление Macro Assembler добавляет функции высокого уровня». InfoWorld. Vol. 13 нет. 17. с. 21. ISSN  0199-6649.
  3. ^ а б Р. Э. Харви (2007). «Сборщики». Архивировано из оригинал 16 февраля 2008 г.. Получено 4 февраля 2010.
  4. ^ «Архивная копия». Архивировано из оригинал на 2009-01-26. Получено 2008-06-24.CS1 maint: заархивированная копия как заголовок (ссылка на сайт)
  5. ^ «Белые книги и документация ВСБМ». Получено 25 сентября 2016.
  6. ^ Microsoft Macro Assembler 5.1, Руководство по программированию на разных языках. п. 3.

внешняя ссылка