Articulo de referencia

Ensamblador de macros de Microsoft

Microsoft Macro Assembler ( MASM ) es un ensamblador x86 que utiliza la sintaxis de Intel para MS-DOS y Microsoft Windows . A partir de MASM 8.0, existen dos versiones del ensam...

Microsoft Macro Assembler ( MASM ) es un ensamblador x86 que utiliza la sintaxis de Intel para MS-DOS y Microsoft Windows . A partir de MASM 8.0, existen dos versiones del ensamblador: una para código fuente de 16 y 32 bits , y otra ( ML64 ) solo para código fuente de 64 bits .

MASM es mantenido por Microsoft , pero desde la versión 6.12 no se vende como producto independiente. En su lugar, se incluye con varios SDK y compiladores de C de Microsoft . Las versiones recientes de MASM se incluyen con Microsoft Visual Studio .

Entre las aplicaciones notables compiladas con MASM se encuentra RollerCoaster Tycoon , que fue escrita en un 99% en lenguaje ensamblador y compilada con MASM. [ 1 ]

Historia

Las primeras versiones de MASM datan de 1981. [ 2 ] Se vendían como el "Microsoft Macro Assembler" genérico para todas las máquinas x86 o como la versión OEM específicamente para PC IBM . En la versión 4.0, se dejó de distribuir la versión para IBM . Hasta la versión 3.0, MASM también se distribuía con un ensamblador complementario más pequeño, ASM.EXE. Este estaba destinado a PC con solo 64k de memoria y carecía de algunas características de la versión completa de MASM, como la capacidad de usar macros de código.

Las versiones de MS-DOS hasta la 4.x incluían la utilidad LINK de Microsoft, diseñada para convertir archivos OBJ intermedios generados por MASM y otros compiladores; sin embargo, como los usuarios que no programaban no podían usarla, se trasladó a sus paquetes de compilación.

La versión 4.0, publicada en octubre de 1985, añadió compatibilidad con las instrucciones 286 .

La versión 5.0, lanzada en agosto de 1987, admitía instrucciones 386 , así como abreviaturas para los descriptores de segmento (.code, .data, etc.), pero aún así solo podía generar ejecutables en modo real.

Hasta la versión 5.0, MASM solo estaba disponible como aplicación para MS-DOS . Las versiones 5.1 y 6.0 estaban disponibles como aplicaciones para MS-DOS y OS/2 . [ 3 ]

La versión 6.0, lanzada en 1991, añadió el paso de parámetros con "invoke" y otras construcciones de alto nivel, además de los registros de alto nivel ya existentes , entre otras cosas. Tanto la versión 6.0 como la 6.0B podían ejecutarse en un procesador 8086 , pero podían generar código plano de 32 bits 386. En 1992, se lanzó la versión 6.1, que añadió compatibilidad con el formato de objeto COFF utilizado por Windows NT y eliminó la compatibilidad con OS/2. La versión 6.1 se compiló como un binario bimodal antes de que se finalizara la API de Win32 , y es incompatible con la ejecución en Windows NT debido a la falta de exportaciones. [ 4 ]

En 1993 se añadió compatibilidad total con aplicaciones de 32 bits en modo protegido y el conjunto de instrucciones Pentium . El binario MASM 6.11 de aquel entonces (1993) se distribuía como un binario extendido para DOS "bimodal" (win32, es decir, PE ) (utilizando el extensor Phar Lap TNT para DOS). Sin embargo, setup.exe es un ejecutable MZ, por lo que no se ejecutará en versiones de 64 bits de Windows, y el ejecutable bimodal ml.exe está comprimido , y decomp.exe es un ejecutable NE, por lo que tampoco se ejecutará en versiones de 64 bits de Windows; por lo tanto, es necesario tener acceso a Windows de 32 bits (o MS-DOS) para instalarlo. La versión 6.11 es la última versión de MASM que se ejecutará en MS-DOS. Existía una serie de parches disponibles, hasta la versión 6.11d, que requerían Windows de 32 bits para ejecutarse, pero el archivo ml.exe parcheado aún conserva el extensor de dos de Phar Lap, por lo que todavía se puede ejecutar bajo MSDOS.

A finales de 1997, MASM era totalmente compatible con Windows 95 e incluía algunas instrucciones específicas de AMD . [ 5 ]

En 1999, Intel lanzó macros para instrucciones SIMD y MMX , que poco después fueron compatibles de forma nativa con MASM. Con el lanzamiento de la versión 6.15 en 2000, Microsoft dejó de ofrecer soporte para MASM como producto independiente, integrándolo en el conjunto de herramientas de Visual Studio . Si bien seguía siendo compatible con Windows 98 , las versiones actuales de Visual Studio no lo eran. [ 5 ] El soporte para procesadores de 64 bits no se añadió hasta el lanzamiento de Visual Studio 2005 , con MASM 8.0.

Después del 25 de junio de 2015, existen al menos tres MASM diferentes con el número de versión 14.00.23026. En Microsoft Visual Studio 2015 Enterprise Edition, hay un ml "amd64_x86" y dos ml64, "x86_amd64" y "amd64". Estos se ejecutan en plataformas diferentes y están dirigidos a plataformas diferentes.

  • amd64_x86: genera código de 64 bits, se ejecuta en un entorno Windows de 32 bits.
  • x86_amd64: genera código de 32 bits, se ejecuta en un entorno Windows de 64 bits.
  • amd64: genera código de 64 bits, se ejecuta en un entorno Windows de 64 bits.

Formatos de módulos objeto compatibles con MASM

Las primeras versiones de MASM generaban módulos de objetos utilizando el formato OMF , que se utilizaba para crear binarios para MS-DOS u OS/2 .

Desde la versión 6.1, MASM puede generar módulos objeto en formato ejecutable portátil [ 6 ] [ 7 ] (PE/COFF). PE/COFF es compatible con los compiladores C recientes de Microsoft, y los módulos objeto generados tanto por MASM como por el compilador C pueden combinarse y enlazarse de forma rutinaria en binarios Win32 y Win64.

Ensambladores compatibles con MASM

Otros ensambladores pueden ensamblar la mayor parte del código escrito para MASM, con la excepción de las macros más complejas.

  • Turbo Assembler (TASM), desarrollado por Borland y posteriormente propiedad de Embarcadero, se actualizó por última vez en 2002, pero aún se suministra con C++Builder y RAD Studio .
  • JWasm Macro Assembler, con licencia bajo el EULA de Sybase Open Watcom . Última actualización: 2014.
  • El ensamblador de macros de Pelle, un componente del entorno de desarrollo Pelles C , se encuentra archivado el 29 de febrero de 2020 en Wayback Machine .
  • UASM es un ensamblador gratuito compatible con MASM basado en JWasm.
  • ASMC es un ensamblador gratuito compatible con MASM basado en JWasm.

Compatibilidad con programación en lenguajes mixtos

La documentación de la versión 5.1 de 1987 incluía soporte para " Microsoft BASIC , C, FORTRAN , Pascal ". [ 8 ]

Recepción

En una revisión de tres ensambladores, Michael Blaszczak de BYTE descubrió en febrero de 1989 que MASM 5.1 era el más lento y el que más problemas presentaba con el código. Concluyó que "MASM requiere un tiempo de adaptación, pero cumple su función" a pesar de "una buena cantidad de peculiaridades y rarezas frustrantes". [ 9 ]

Véase también

Referencias

  1. "Chris Sawyer Software Development" . www.chrissawyergames.com . Archivado del original el 7 de marzo de 2025. Consultado el 5 de enero de 2023 .
  2. Watt, Peggy; Christine McGeever (7 de enero de 1985). "Macintosh vs. IBM PC al año" . InfoWorld . Vol. 7, n.º 1, págs. 15-16 . ISSN 0199-6649 .    El ensamblador de macros para IBM PC se lanzó en diciembre de 1981.
  3. Marshall, Martin (29 de abril de 1991). "La actualización del ensamblador de macros añade características de alto nivel" . InfoWorld . Vol. 13, n.º 17, pág. 21. ISSN 0199-6649 .    
  4. "Q94314: Código MASM de modelo de memoria plana de 32 bits para Windows NT" . Archivado del original el 13 de enero de 2021. Consultado el 3 de octubre de 2023 .
  5. 1 2 R. E. Harvey (2007). "Assemblers" . Archivado del original el 16 de febrero de 2008. Recuperado el 4 de febrero de 2010 .
  6. "Copia archivada" . Archivado del original el 26/01/2009 . Recuperado el 24/06/2008 .{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace )
  7. "Documentos técnicos y documentación de WHDC" . Microsoft . Consultado el 25 de septiembre de 2016 .
  8. Microsoft Macro Assembler 5.1, Guía de programación en lenguajes mixtos . pág. 3. 
  9. Blaszczak, Michael (febrero de 1989). "Tres ensambladores para MS-DOS" . BYTE . págs. 205–209 . Recuperado el 8 de octubre de 2024 . 
  • Sitio web oficial
  • Proyecto Masm32
Obtenido de " https://en.wikipedia.org/w/index.php?title=Microsoft_Macro_Assembler&oldid=1301136287 "