FASM ( ensamblador plano ) es un ensamblador para procesadores x86 . Es compatible con el lenguaje ensamblador de estilo Intel en las arquitecturas de computadora IA-32 y x86-64 . Afirma alta velocidad, optimizaciones de tamaño, portabilidad del sistema operativo (SO) y capacidades macro . [1] [2] Es un ensamblador de bajo nivel [2] y usa intencionalmente muy pocas opciones de línea de comandos. Es un software gratuito y de código abierto .
Desarrollador (es) | Tomasz Grysztar |
---|---|
Versión inicial | Marzo de 2000 |
Lanzamiento estable | 1.73.27 / 27 de enero de 2021 |
Repositorio | |
Escrito en | Montaje |
Sistema operativo | Tipo Unix , Linux , Windows e IDE, DOS e IDE, OpenBSD , etc., MenuetOS , KolibriOS , OctaOS , DexOS e IDE, SkyOS , Solar_OS |
Plataforma | x86 , x86-64 |
Tipo | Ensamblador |
Licencia | BSD simplificado con una cláusula de copyleft débil |
Sitio web | ensamblador de planos |
Todas las versiones de FASM pueden generar directamente cualquiera de los siguientes: binario plano "en bruto" (utilizable también como ejecutable DOS COM o controlador SYS), objetos: formato ejecutable y enlazable (ELF) o formato de archivo de objeto común (COFF) (clásico o MS -específico) o ejecutables en formato MZ , ELF o Portable Executable (PE) (incluidos los controladores WDM, permite el stub MZ DOS personalizado). También existe un puerto no oficial dirigido a la arquitectura ARM ( FASMARM ). [3]
Historia
El proyecto fue iniciado en 1999 por Tomasz Grysztar, también conocido como Privalov , en ese momento, un estudiante universitario de matemáticas de Polonia . Fue lanzado públicamente en marzo de 2000. [4] [5] FASM está completamente escrito en lenguaje ensamblador y viene con la fuente completa. Es autohospedado y se ha podido ensamblar solo desde la versión 0.90 (4 de mayo de 1999).
FASM originalmente solo se ejecutaba en modo real plano de 16 bits . Se agregó soporte de 32 bits y luego se complementó con soporte DPMI opcional . Fue escrito de una manera que facilitó la migración a cualquier sistema operativo que permitiera direccionamiento plano de 32 bits; fue portado a Windows y luego a Linux.
Diseño
FASM no admite tantas declaraciones de alto nivel como MASM o TASM . [2] Proporciona funciones de sintaxis y macros, que permiten personalizar o crear declaraciones faltantes. [4] Su sintaxis de direccionamiento de memoria es similar al modo ideal de TASM y NASM . Los corchetes se utilizan para denotar operandos de memoria como en ambos ensambladores, pero su tamaño se coloca fuera de los corchetes, como en NASM. [6]
FASM es un ensamblador de múltiples pasadas. Realiza una amplia optimización del tamaño del código y permite referencias hacia adelante sin restricciones. [2] [6] Una construcción de FASM inusual es definir procedimientos solo si se usan en algún lugar del código, algo que en la mayoría de los lenguajes el vinculador hace por objeto .
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 comando. [6] Este enfoque evita que las fuentes FASM compilen los problemas que a menudo se presentan 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 en varios idiomas. Sin embargo, existe un contenedor de Win32 llamado FA, que mitiga este problema. [7] Los proyectos FASM se pueden construir desde un archivo fuente directamente en un archivo ejecutable sin una etapa de vinculación. [2]
IDE
Fresh , un proyecto apoyado por la comunidad de Internet iniciado por John Found, es un entorno de desarrollo integrado para FASM. [8] Fresh actualmente es compatible con Microsoft Windows y Linux. [8]
Usar
Sistemas operativos escritos con FASM:
- DexOS [9] - por Craig Bamford y la comunidad DexOS
- MenuetOS [10] - Sistemas operativos GUI de 32 y 64 bits de Ville Turijanmaa
- KolibriOS
Compiladores que usan FASM como backend:
- PureBasic
- Ensamblaje de alto nivel (HLA)
- BlitzMax
Ver también
- Comparación de ensambladores
Referencias
- ^ Tomasz Grysztar. "Manual del programador del ensamblador plano" . Consultado el 12 de mayo de 2008 .
- ^ a b c d e Randall Hyde. "¿Qué ensamblador es el mejor?" . Consultado el 18 de mayo de 2008 .
- ^ "FASMARM" . 2008-03-20 . Consultado el 12 de mayo de 2008 .
- ^ a b "Entrevista con Privalov el autor de FASM" . 2004-08-12. Archivado desde el original el 8 de octubre de 2007 . Consultado el 12 de mayo de 2008 .
- ^ Tomasz Grysztar (15 de marzo de 2000). "ensamblador plano" . Consultado el 19 de mayo de 2008 .
- ^ a b c Tomasz Grysztar. "Principios de diseño de ensambladores planos" . Consultado el 12 de mayo de 2008 .
- ^ Tomasz Grysztar. "FA - extensión de línea de comando para fasm" . Consultado el 11 de mayo de 2012 .
- ^ a b "Proyecto Fresh ID" .
- ^ "Preguntas frecuentes de DexOS" . Archivado desde el original el 3 de marzo de 2016 . Consultado el 18 de mayo de 2008 .
- ^ "MenuetOS" . Consultado el 18 de mayo de 2008 .
enlaces externos
- Proyecto FASM: Web oficial
- FASMLIB 0.8.0 - lib asm portátil x86 de 32 bits para FASM / MASM / YASM / NASM / GASM
- FASMARM - FASM para procesadores ARM, v1.27, 9 de junio de 2012
- El IDE fresco