El Microsoft Macro Assembler ( MASM ) es un x86 ensamblador que utiliza la sintaxis de Intel para MS-DOS y Microsoft Windows . A partir de MASM 8.0, hay dos versiones del ensamblador: una para fuentes de ensamblaje de 16 bits y 32 bits , y otra ( ML64 ) solo para fuentes de 64 bits .
Desarrollador (es) | Microsoft |
---|---|
Versión inicial | 1981 |
Lanzamiento estable | 14.16.27023.1 / 7 de marzo de 2017 |
Sistema operativo | Microsoft Windows y MS-DOS |
Tipo | Ensamblador |
Licencia | Software propietario comercial |
Sitio web | docs |
MASM es mantenido por Microsoft , pero desde la versión 6.12 no se ha vendido como un producto separado. En su lugar, se suministra con varios compiladores C y SDK de Microsoft . Las versiones recientes de MASM se incluyen con Microsoft Visual Studio .
Historia
Las primeras versiones de MASM se remontan a 1981. [1] Se vendieron como "Microsoft Macro Assembler" genérico para todas las máquinas x86 o como la versión OEM específicamente para IBM PC . En la Versión 4.0, se eliminó el lanzamiento de IBM. Hasta la versión 3.0, MASM también se incluía con un ensamblador complementario más pequeño, ASM.EXE. Esto estaba destinado a PC con solo 64k de memoria y carecían de algunas características del MASM completo, como la capacidad de usar macros de código.
Las versiones de MS-DOS hasta 4.x incluían la utilidad LINK de Microsoft, que fue diseñada para convertir archivos OBJ intermedios generados por MASM y otros compiladores; sin embargo, como los usuarios que no programaron no tenían uso de la utilidad, se trasladó a sus paquetes de compilación.
La versión 4.0 agregó soporte para 286 instrucciones y también mnemónicos taquigráficos para descriptores de segmento (.code, .data, etc.). La versión 5.0 admitía 386 instrucciones, pero solo podía generar ejecutables en modo real.
A través de la versión 5.0, MASM solo estaba disponible como una aplicación de MS-DOS . Las versiones 5.1 y 6.0 estaban disponibles como aplicaciones de MS-DOS y OS / 2 . [2]
La versión 6.0, lanzada en 1992, agregó el paso de parámetros con "invoke" y algunas otras construcciones de alto nivel, además de los registros de alto nivel ya existentes , entre otras cosas. A finales de año, la versión 6.1A actualizó la gestión de la memoria [ ¿cómo? ] [ aclaración necesaria ] para ser compatible con el código producido por Visual C ++ . En 1993 se agregó soporte completo para aplicaciones de 32 bits en modo protegido y el conjunto de instrucciones Pentium . El binario MASM en ese momento se envió como un binario extendido DOS "bimodal" (usando el extensor DOS de Phar Lap TNT).
Las versiones 6.12 a 6.14 se implementaron como parches para la versión 6.11. Estos parches cambiaron el tipo de binario al formato PE nativo . La versión 6.11 es la última versión de MASM que se ejecutará en MS-DOS.
A finales de 1997, MASM era totalmente compatible con Windows 95 e incluía algunas instrucciones específicas de AMD . [3]
En 1999, Intel lanzó macros para instrucciones SIMD y MMX , que poco después fueron compatibles de forma nativa con MASM. Con la versión 6.15 en 2000, Microsoft descontinuó el soporte para MASM como un producto separado, en lugar de incluirlo en el conjunto de herramientas de Visual Studio . Aunque todavía era compatible con Windows 98 , las versiones actuales de Visual Studio no lo eran. [3] No se agregó soporte para procesadores de 64 bits hasta el lanzamiento de Visual Studio 2005 , con MASM 8.0.
Después del 25 de junio de 2015, hay al menos tres MASM diferentes con el número de versión 14.00.23026. En Microsoft Visual Studio 2015 Enterprise Edition, hay un "amd64_x86" ml y dos ml64, "x86_amd64" y "amd64". Se ejecutan en diferentes plataformas dirigidas a diferentes plataformas:
- amd64_x86: genera código de 64 bits, se ejecuta en un entorno de Windows de 32 bits
- x86_amd64: genera código de 32 bits, se ejecuta en un entorno de Windows de 64 bits
- amd64: genera código de 64 bits, se ejecuta en un entorno de Windows de 64 bits
Formatos de módulo de objeto admitidos por MASM
Las primeras versiones de MASM generaban módulos de objetos utilizando el formato OMF , que se usaba para crear binarios para MS-DOS o OS / 2 .
Desde la versión 6.1, MASM puede producir módulos de objetos en formato Portable Ejecutable [4] [5] (PE / COFF). PE / COFF es compatible con los compiladores C recientes de Microsoft, y los módulos de objeto producidos por MASM o el compilador C se pueden entremezclar y vincular de forma rutinaria en archivos binarios Win32 y Win64.
Ensambladores compatibles con MASM
Algunos otros ensambladores pueden ensamblar la mayor parte del código escrito para MASM, con la excepción de macros más complejas.
- Turbo Assembler (TASM) desarrollado por Borland, luego propiedad de Embarcadero, actualizado por última vez en 2002, pero aún se suministra con C ++ Builder y RAD Studio .
- JWasm Macro Assembler, con licencia de Sybase Open Watcom EULA. Última actualización en 2014.
- Macro Assembler de Pelle, un componente del entorno de desarrollo de Pelles C.
- UASM es un ensamblador compatible con MASM gratuito basado en JWasm.
- ASMC es un ensamblador compatible con MASM gratuito basado en JWasm.
Soporte de programación de lenguaje mixto
La documentación de la versión 5.1 de 1987 incluía compatibilidad con "Microsoft BASIC, C, FORTRAN, Pascal". [6]
Problemas de licencia
El uso de MASM para el desarrollo del sistema operativo no está prohibido en el acuerdo de licencia, aunque a veces puede escuchar eso. Esto se debe a que la gente a menudo confunde las licencias MASM y MASM32; son dos proyectos independientes.
Ver también
- Microsoft MACRO-80
- Lenguaje ensamblador
- Ensamblador de alto nivel
- Comparación de ensambladores
Referencias
- ^ Watt, Peggy; Christine McGeever (7 de enero de 1985). "Macintosh Vs. IBM PC en un año" . InfoWorld . Vol. 7 no. 1. págs. 15-16. ISSN 0199-6649 . IBM PC Macro Assembler se lanzó en diciembre de 1981.
- ^ Marshall, Martin (29 de abril de 1991). "La actualización del ensamblador de macros agrega características de alto nivel" . InfoWorld . Vol. 13 no. 17. p. 21. ISSN 0199-6649 .
- ^ a b RE Harvey (2007). "Ensambladores" . Archivado desde el original el 16 de febrero de 2008 . Consultado el 4 de febrero de 2010 .
- ^ "Copia archivada" . Archivado desde el original el 26 de enero de 2009 . Consultado el 24 de junio de 2008 .CS1 maint: copia archivada como título ( enlace )
- ^ "Libros blancos y documentación de WHDC" . Consultado el 25 de septiembre de 2016 .
- ^ Microsoft Macro Assembler 5.1, Guía de programación de idiomas mixtos . pag. 3.
enlaces externos
- Página web oficial
- Introducción a MASM Win32
- Proyecto masm32