Open Watcom Assembler o WASM es un ensamblador x86 producido por Watcom , basado en Watcom Assembler que se encuentra en el compilador Watcom C / C ++ y Watcom FORTRAN 77 . [1] [2] [3] Se están realizando más desarrollos en el proyecto JWASM de 32 y 64 bits. [4] que se asemeja más a la sintaxis del ensamblador de Microsoft . [5]
Autor (es) original (es) | Ensamblador Watcom abierto |
---|---|
Sistema operativo | DOS para PC basadas en x86 , Microsoft Windows , Linux para PC basadas en x86, OS / 2 para PC basadas en x86 , FreeBSD para PC basadas en x86. |
Disponible en | inglés |
Tipo | ensamblador x86 |
Sitio web | www |
Hay ensambladores experimentales para PowerPC , Alpha AXP y MIPS . [6]
Detalles técnicos
Ensamblador
- Soporte nativo para formatos de salida Formatos de salida Intel OMF
- Admite conjuntos de instrucciones Intel x86 (Pentium MMX, Pentium III-4, 3DNow !, SSE y SSE2).
- Admite la sintaxis 5 y 6 del ensamblador de macros de Microsoft (MASM) (incompleto). [6]
Desensamblador
Hay un desensamblador Watcom asociado , wdis . El ensamblador no tiene facilidades de listado; en su lugar, se recomienda el uso de wdis para generar listados. [7] wdis puede leer archivos de objeto OMF, COFF y ELF y ejecutables PE y ELF. Admite el conjunto de instrucciones x86 de 16 y 32 bits, incluidos MMX, 3DNow !, SSE, SSE2 y SSE3. También se incluye compatibilidad con los conjuntos de instrucciones PowerPC, Alpha AXP, MIPS y SPARC V8 . [8]
Horquillas WASM
JWasm
JWasm es una bifurcación de Wasm originada por Japheth con las siguientes características:
- Soporte nativo para formatos de salida Intel OMF (16/32 bits), MS Coff (32 bits y 64 bits), Elf (32 bits y 64 bits), Bin y DOS MZ.
- Los binarios de JWasm precompilados están disponibles para DOS, Windows y Linux. Para OS / 2 y FreeBSD, se proporcionan archivos MAKE.
- Admite Intel x86 (8086, 80186, 80286, 80386, 80486, Pentium, Pentium Pro), conjuntos de instrucciones x86-64 con SIMD (MMX, 3DNow !, SSE, SSE2, SSE3 y SSSE3, SSE4.1 / 2 (desde Jwasm) , AVX (desde JWasm 2.06), VMX ( Intel VT-x; AMD SVM , este último aunque ya implementado, actualmente todavía inactivo) extensiones (desde JWasm 2.09)).
- JWasm está escrito en C. La fuente es portátil y se ha probado con éxito con Open Watcom, MS VC, GCC y más.
- En Windows, JWasm se puede utilizar con Win32Inc y Masm32. Desde v2.01, también funcionará con el kit de lenguaje ensamblador SBS WALK32 Win32 de Sven B. Schreiber [9]
- Los archivos de encabezado C se pueden convertir para incluir archivos para JWasm con el propio h2incX dedicado de Japheth.
- El código fuente de JWasm se publica bajo la licencia pública Sybase Open Watcom, que permite el uso comercial y no comercial gratuito.
- Es totalmente compatible con la sintaxis del ensamblador de macros de Microsoft 6, todos los conjuntos de instrucciones de MASM 8.
Japheth dejó de desarrollar JWASM en enero de 2014 con la versión 2.12pre, pero otros en el foro Masm32 [10] continuaron donde lo dejó Japheth.
HJWasm
HJWasm, agregando el prefijo H en referencia al miembro del foro de Masm32, Habran, quien comenzó esta segunda continuación del desarrollo de WASM. La versión 2.13pre se anunció originalmente en 2016. [11] Las nuevas características incluyen:
- Instrucciones:
- SIMD:
- MMX : MOVQ y agregado en 2.13, para complementar MOVD.
- AVX2 : VGATHERDPD, VGATHERQPD, VGATHERDPS, VGATHERQPS, VPGATHERDD, VPGATHERQD, VPGATHERDQ, VPGATHERQQ, instrucciones de propósito general codificadas en VEX agregadas en 2.13. Se agregaron las instrucciones restantes en 2.16.
- AVX-512 : VCMPxxPD, VCMPxxPS, VCMPxxSD, VCMPxxPD, VCMPxxSS, conjunto AVX-512F, instrucciones codificadas en EVEX agregadas en 2.13; VMOVQ agregó 2.13, para complementar MOVD. Se agregaron las instrucciones restantes en 2.16.
- Registros: RIP, registros ZMM agregados en 2.13.
- Extensión de idioma OO agregada en 2.25.
HASM
UASM es una versión renombrada de HJWASM, comenzando en la versión 2.33. El nombre se usó siguiendo un hilo de discusión del Foro MASM que originalmente propuso un nombre de reemplazo. El nombre HASM fue propuesto por el miembro del foro habran en la Respuesta # 6, [12] y se finalizó al final del hilo de discusión en la Respuesta # 33. [13] No se agregan características conocidas en el ciclo de lanzamiento de HASM.
UASM
En realidad, el nombre se usó en la versión 2.33 (con fecha del 20 de mayo de 2017) en la página del producto de Terraspace ltd, [14] pero solo se anunció en la versión 2.34. [15] Los cambios en HJWASM incluyen: [16]
- Conjuntos de instrucciones: RDPID agregado en 2.38.
- AVX-512 : VAESDEC agregado en 2.38
- Transferencia de datos: MOVBE agregado en 2.47. MOVABS agregado en 2.48.
- Intel ADX : ADCX, ADOX agregado en 2.38
- Intel MPX : Soporte del prefijo BND agregado en 2.34. Prefijo BND eliminado del grupo de instrucciones JCXZ en 2.40.
- Conjunto de instrucciones CLMUL : agregado en 2.46.8, incluidas las formas pseudooperativas de CLMUL.
- Hashing: conjunto de instrucciones SHA agregado en 2.46.8.
- Prevención de acceso al modo supervisor : CLAC agregado en 2.38.
- Extensiones de memoria persistente : CLFLUSHOPT agregado en 2.38.
- Modos de direccionamiento: 64 bits absoluto inmediato (2,37)
- Tipos identificados
- Tipos de registro: admite completamente registros y campos de registro de hasta 32 bits en 2.41.
- Soporte para 128bit: agregado en 2.42, declaración en línea con el tipo agregado en 2.43.1 / .2.
- Se agregó compatibilidad con la cadena typedef en los tipos de devolución en 2.46.8.
- Tipos incorporados m512 agregados en 2.47.
- Codificación de colores de la consola: agregada para Windows, OSX y Linux en 2.43.1 / .2.
- Llamada de función: llamada de función de estilo C agregada en 2.46.
Referencias
- ^ Randall Hyde. "WASM: El ensamblador abierto de Watcom" . Archivado desde el original el 2 de marzo de 2012 . Consultado el 11 de septiembre de 2017 .CS1 maint: bot: estado de URL original desconocido ( enlace )
- ^ Leiterman, James (2005). "MASM frente a NASM frente a TASM frente a WASM". Arquitectura de lenguaje ensamblador 80x86 de 32/64 bits . Wordware Publishing, Inc. pág. 481. ISBN 978-1-59822-002-5. Consultado el 1 de febrero de 2010 .
- ^ Leiterman p482 en Google Books
- ^ JWASM , un ensamblador de 32/64 bits basado en WASM con sintaxis similar a MASM . Archivado el 10 de octubre de 2014
- ^ Fog, Agner (2009), Optimización de subrutinas en lenguaje ensamblador (PDF) (2009-09-26 ed.), P. 13
- ^ a b Sitio web abierto de Watcom: Ensamblador Archivado el 15 de julio de 2006 en Wayback Machine.
- ^ OpenWatcom: "No se generan archivos de listado [por el ensamblador]. Producir listados completos puede ser una pérdida de esfuerzo porque wdis (el desensamblador de Open Watcom) hace un muy buen trabajo. Sin embargo, podría ser extremadamente útil producir un volcado de la tabla de símbolos internos como lo hace MASM, especialmente con fines de diagnóstico ".
- ^ Sitio web abierto de Watcom: Disassembler Archivado el 15 de julio de 2006 en la Wayback Machine.
- ^ El 1996 "WALK32 consta de los siguientes componentes principales:
- Un enlazador de archivos PE (ejecutable portátil) con todas las funciones llamado W32Link.
- Un archivo de inclusión principal, que contiene definiciones de estructura, tipo y constante de Win32.
- Otro archivo de inclusión, que contiene la aplicación y el código fuente de inicio de la DLL.
- Macros de gestión de segmentos y secciones de PE.
- Macros relacionadas con la compatibilidad con Unicode.
- Varias aplicaciones de demostración y DLL.
- Una colección de utilidades de programación para varios propósitos. "Walk32.doc en walk32_1.zip
- ^ Desarrollo de ensamblador UASM
- ^ Lanzamientos de HJWasm
- ^ ¿ Un nuevo nombre? (hilo de la página 1)
- ^ ¿ Un nuevo nombre? (hilo de la página 3)
- ^ UASM (2,33)
- ^ Versión UASM 2.33
- ^ UASM ChangeLog
enlaces externos
- wiki de ensamblador de wasm
- JWasm
- Páginas de terraspace ltd: HJWASM , Hasm , UASM