FASM ( ensamblador plano ) es un ensamblador para procesadores x86 . Es compatible con el lenguaje ensamblador de estilo Intel en las arquitecturas informáticas IA-32 y x86-64 . Afirma alta velocidad, optimizaciones de tamaño, portabilidad del sistema operativo (OS) y capacidades de macro . [2] [3] Es un ensamblador de bajo nivel [3] y utiliza intencionalmente muy pocas opciones de línea de comandos . Es software libre y de código abierto .
Todas las versiones de FASM pueden generar directamente cualquiera de los siguientes: binario plano "sin procesar" (que también se puede utilizar como ejecutable COM de MS-DOS o controlador SYS), objetos: formato ejecutable y enlazable (ELF) o formato de archivo de objeto común (COFF) (clásico o específico de MS), o ejecutables en formato MZ , ELF o ejecutable portátil (PE) (incluidos los controladores WDM, que permiten un stub MZ DOS personalizado). También existe un puerto no oficial destinado a la arquitectura ARM (FASMARM). [4]
Historia
El proyecto fue iniciado en 1999 por Tomasz Grysztar, también conocido como Privalov , en ese momento un estudiante de pregrado de matemáticas de Polonia . Fue lanzado públicamente en marzo de 2000. [5] [6] FASM está completamente escrito en lenguaje ensamblador y viene con el código fuente completo. Es autoalojado y ha podido ensamblarse a sí mismo desde la versión 0.90 (4 de mayo de 1999).
FASM se ejecutaba originalmente en modo real plano de 16 bits . Se agregó compatibilidad con 32 bits y luego se complementó con compatibilidad con DPMI opcional . Diseñado para que fuera fácil de portar a cualquier sistema operativo con direccionamiento plano de 32 bits, se portó a Windows y luego a Linux.
Diseño
FASM no admite tantas sentencias de alto nivel como MASM o TASM . [3] Proporciona funciones de sintaxis y macros que permiten personalizar o crear sentencias faltantes. [5] Su sintaxis de direccionamiento de memoria es similar al modo ideal de TASM y NASM . Se utilizan corchetes para indicar los operandos de memoria como en ambos ensambladores, pero su tamaño se coloca fuera de los corchetes, como en NASM. [7]
FASM es un ensamblador de múltiples pasadas. Realiza una optimización extensa del tamaño del código y permite referencias hacia adelante sin restricciones. [3] [7] Una construcción inusual de FASM es definir procedimientos solo si se usan en alguna parte del código, algo que en la mayoría de los lenguajes se hace por objeto mediante el enlazador .
FASM se basa en el principio de "misma fuente, misma salida": el contenido del archivo resultante no se ve afectado por la línea de comandos. [7] Este enfoque evita que las fuentes de FASM tengan problemas de compilación que suelen presentarse en muchos proyectos de ensamblaje. Por otro lado, dificulta el mantenimiento de un proyecto que consta de varios archivos fuente compilados por separado o proyectos de lenguaje mixto. Sin embargo, existe un contenedor Win32 llamado FA, que mitiga este problema. [8] Los proyectos de FASM se pueden crear a partir de un archivo fuente directamente en un archivo ejecutable sin una etapa de enlace. [3]
IDE
Fresh , un proyecto respaldado por la comunidad de Internet iniciado por John Found, es un entorno de desarrollo integrado para FASM. [9] Fresh actualmente es compatible con Microsoft Windows y Linux. [9]
Usar
Sistemas operativos escritos con FASM:
- MenuetOS [10] – Sistemas operativos con interfaz gráfica de usuario de 32 y 64 bits de Ville Turijanmaa
- Colibrí OS
Compiladores que utilizan FASM como backend:
Véase también
Referencias
- ^ "Descargar".
- ^ Grysztar, Tomasz (12 de mayo de 2008). "Manual del programador de ensamblador plano". flat assembly . Consultado el 12 de mayo de 2008 .
- ^ abcde Hyde, Randall. "¿Cuál es el mejor ensamblador?" . Consultado el 18 de mayo de 2008 .[ enlace muerto permanente ]
- ^ "FASMARM". 20 de marzo de 2008. Consultado el 12 de mayo de 2008 .
- ^ ab "Entrevista con Privalov, autor de FASM". 12 de agosto de 2004. Archivado desde el original el 8 de octubre de 2007. Consultado el 12 de mayo de 2008 .
- ^ Grysztar, Tomasz (15 de marzo de 2000). "ensamblador plano" . Consultado el 19 de mayo de 2008 .
- ^ abc Grysztar, Tomasz. "Principios de diseño de ensambladores planos" . Consultado el 12 de mayo de 2008 .
- ^ Grysztar, Tomasz. «FA – extensión de línea de comandos para fasm» . Consultado el 11 de mayo de 2012 .
- ^ ab Encontrado, John. "Nuevo proyecto de identificación".
- ^ "MenuetOS" . Consultado el 18 de mayo de 2008 .
Enlaces externos
- Proyecto FASM: Sitio web oficial
- FASMLIB 0.8.0: biblioteca asm x86 portátil de 32 bits para FASM/MASM/YASM/NASM/GASM
- FASMARM – FASM para procesadores ARM, v1.27, 9 de junio de 2012 (2012-06-09)
- El IDE fresco