stringtranslate.com

Abra el ensamblador Watcom

Open Watcom Assembler o WASM es un ensamblador x86 producido por Watcom , basado en el ensamblador Watcom 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 coincide más estrechamente con la sintaxis del ensamblador de Microsoft . [5]

Existen ensambladores experimentales para PowerPC , Alpha AXP y MIPS . [6]

Detalles técnicos

Ensamblador

Desensamblador

Existe un desensamblador Watcom asociado , wdis . El ensamblador no tiene funciones de listado; en su lugar, se recomienda el uso de wdis para generar listados. [7] wdis puede leer archivos de objetos OMF, COFF y ELF y ejecutables PE y ELF. Admite conjuntos de instrucciones x86 de 16 y 32 bits, incluidos MMX, 3DNow!, SSE, SSE2 y SSE3. También está integrado el soporte para 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:

Japheth detuvo el desarrollo (o más bien, dejó de estar en contacto) de JWASM en enero de 2014 con la versión 2.12pre, pero actualmente continúa trabajando en el proyecto en GitHub. [10] La versión actual (junio de 2024) es la 2.18. Además, otros en el foro Masm32 [11] continuaron donde Japheth lo dejó.

HJ Wasm

HJWasm, agregando el prefijo H en referencia al miembro del foro Masm32 Habran, quien inició esta segunda continuación del desarrollo de WASM. La versión 2.13pre se anunció originalmente en 2016. [12] Las nuevas características incluyen:

  • SIMPLEMENTE:
  • 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 con VEX agregadas en 2.13. Las instrucciones restantes se agregaron en 2.16.
  • AVX-512 : VCMPxxPD, VCMPxxPS, VCMPxxSD, VCMPxxPD, VCMPxxSS, conjunto AVX-512F, instrucciones codificadas con EVEX agregadas en 2.13; VMOVQ agregado en 2.13, para complementar MOVD. Las instrucciones restantes se agregaron en 2.16.
  • Generador de números aleatorios: RDRAND , RDSEED agregado en 2.13.
  • Conversiones de media precisión: F16C (VCVTPH2PS, VCVTPS2PH) agregado en 2.13.
  • Intel MPX : agregado en 2.31.

HASM

HASM es una versión renombrada de HJWASM, que comenzó en la versión 2.33. El nombre se utilizó después de un hilo de discusión del foro MASM que originalmente proponía un nombre de reemplazo. El nombre HASM fue propuesto por el miembro del foro habran en la Respuesta n.° 6, [13] y se finalizó al final del hilo de discusión en la Respuesta n.° 33. [14] No se agregaron características conocidas en el ciclo de lanzamiento de HASM.

Universidad Autónoma de San Luis Potosí

El nombre se utilizó en realidad en la versión 2.33 (fechada el 20 de mayo de 2017) en la página de productos de Terraspace Ltd, [15] pero recién se anunció en la versión 2.34. [16] Los cambios en HJWASM incluyen: [17]

  • AVX-512 : VAESDEC añadido en 2.38
  • Transferencia de datos: MOVBE añadido en 2.47. MOVABS añadido en 2.48.
  • Intel ADX : ADCX y ADOX añadidos en la versión 2.38
  • Intel MPX : Se agregó compatibilidad con el prefijo BND en la versión 2.34. El prefijo BND se eliminó del grupo de instrucciones JCXZ en la versión 2.40.
  • Conjunto de instrucciones CLMUL : agregado en 2.46.8, incluidas formas pseudo-op 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.
  • Tipos de registro: admite totalmente registros y campos de registro de hasta 32 bits en 2.41.
  • Soporte para 128 bits: agregado en 2.42, declaración en línea con el tipo agregado en 2.43.1 / .2.
  • Se agregó soporte para la cadena typedef en los tipos de retorno en 2.46.8.
  • Se agregaron tipos integrados m512 en 2.47.

Referencias

  1. ^ Randall Hyde. "WASM: El ensamblador abierto de Watcom". Archivado desde el original el 2012-03-02 . Consultado el 2017-09-11 .{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  2. ^ Leiterman, James (2005). "MASM vs. NASM vs. TASM vs. WASM". Arquitectura de lenguaje ensamblador 80x86 de 32/64 bits. Wordware Publishing, Inc. pág. 481. ISBN 978-1-59822-002-5. Recuperado el 1 de febrero de 2010 .
  3. ^ Leiterman p482 en Google Libros
  4. ^ JWASM, un ensamblador de 32/64 bits basado en WASM con una sintaxis similar a MASM . Archivado el 10 de octubre de 2014
  5. ^ Fog, Agner (2009), Optimización de subrutinas en lenguaje ensamblador (PDF) (edición del 26 de septiembre de 2009), pág. 13
  6. ^ Sitio web de Open Watcom: Ensamblador Archivado el 15 de julio de 2006 en Wayback Machine
  7. ^ OpenWatcom: "El ensamblador no genera archivos de listados. Producir listados completos puede ser una pérdida de esfuerzo porque wdis (el desensamblador de OpenWatcom) hace un muy buen trabajo. Sin embargo, podría ser extremadamente útil producir un volcado de la tabla de símbolos interna como lo hace MASM, especialmente para fines de diagnóstico".
  8. ^ Sitio web abierto de Watcom: Desensamblador Archivado el 15 de julio de 2006 en Wayback Machine
  9. ^ El "WALK32" de 1996 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 constantes, tipos y estructuras de Win32.
    • Otro archivo de inclusión, que contiene el código fuente de inicio de la aplicación y la DLL.
    • Macros de gestión de segmentos y secciones PE.
    • Macros relacionadas con el soporte de Unicode.
    • Varias aplicaciones de demostración y DLL.
    • Una colección de utilidades de programación para diversos propósitos. walk32.doc en walk32_1.zip
  10. ^ GitHub/Baron-von-Riedesel/JWasm
  11. ^ Desarrollo del ensamblador UASM
  12. ^ Comunicados de HJWasm
  13. ^ ¿ Un nuevo nombre? (página 1 del hilo)
  14. ^ ¿ Un nuevo nombre? (página 3 del hilo)
  15. ^ UASM (2.33)
  16. ^ Versión 2.33 de UASM
  17. ^ Registro de cambios de UASM

Enlaces externos