Jump to content

Microsoft Макро Ассемблер

(Перенаправлено с МАСМ )
Microsoft Макро Ассемблер
Разработчик(и) Майкрософт
Первоначальный выпуск 1981 год ; 43 года назад ( 1981 )
Стабильная версия
16.14.27023.1 / 7 марта 2017 г .; 7 лет назад ( 07.03.2017 )
Операционная система Microsoft Windows и MS-DOS
Тип Ассемблер
Лицензия Коммерческое проприетарное программное обеспечение
Веб-сайт документы .microsoft /en-нас /cpp /ассемблер /масм /microsoft-macro-assembler-reference

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]

См. также

[ редактировать ]
  1. ^ «Разработка программного обеспечения Криса Сойера» . www.chrissawyergames.com . Проверено 5 января 2023 г.
  2. ^ Ватт, Пегги; Кристин МакГивер (7 января 1985 г.). «Macintosh против IBM PC через год» . Инфомир . Том. 7, нет. 1. С. 15–16. ISSN   0199-6649 . Макроассемблер IBM PC был выпущен в декабре 1981 года.
  3. ^ Маршалл, Мартин (29 апреля 1991 г.). «Обновление макроассемблера добавляет функции высокого уровня» . Инфомир . Том. 13, нет. 17. с. 21. ISSN   0199-6649 .
  4. ^ «Q94314: Код MASM модели 32-битной плоской памяти для Windows NT» . Архивировано из оригинала 13 января 2021 года . Проверено 3 октября 2023 г.
  5. ^ Jump up to: а б Р.Э. Харви (2007). «Ассемблеры» . Архивировано из оригинала 16 февраля 2008 года . Проверено 4 февраля 2010 г.
  6. ^ «Архивная копия» . Архивировано из оригинала 26 января 2009 г. Проверено 24 июня 2008 г. {{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
  7. ^ «Белые книги и документация ВСБМ» . Майкрософт . Проверено 25 сентября 2016 г.
  8. ^ Microsoft Macro Assembler 5.1, Руководство по программированию на смешанных языках . п. 3.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 72e2f1f2a692e43a90889ff8b2b27bcc__1722433980
URL1:https://arc.ask3.ru/arc/aa/72/cc/72e2f1f2a692e43a90889ff8b2b27bcc.html
Заголовок, (Title) документа по адресу, URL1:
Microsoft Macro Assembler - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)