Esta es una comparación incompleta de ensambladores . Algunos ensambladores son componentes de un sistema de compilación para un lenguaje de programación de alto nivel y pueden tener una funcionalidad utilizable limitada o nula fuera del sistema de compilación. Algunos ensambladores se alojan en el procesador y sistema operativo de destino, mientras que otros ensambladores (ensambladores cruzados) pueden ejecutarse en un sistema operativo o procesador no relacionado. Por ejemplo, los ensambladores para sistemas integrados no suelen estar alojados en el sistema de destino, ya que no tendría el almacenamiento y la E/S de terminal para permitir la entrada de un programa desde un teclado. Un ensamblador puede tener un solo procesador de destino o puede tener opciones para admitir varios tipos de procesadores.
Como parte de un conjunto de compiladores
- Ensamblador GNU (GAS): GPL: muchos conjuntos de instrucciones de destino, incluida la arquitectura ARM , Atmel AVR , x86 , x86-64 , Freescale 68HC11 , Freescale v4e , Motorola 680x0 , MIPS , PowerPC , IBM System z , TI MSP430 , Zilog Z80 .
- SDAS (bifurcación de ASxxxx Cross Assemblers y parte del proyecto Small Device C Compiler ): GPL: varios conjuntos de instrucciones de destino, incluidos Intel 8051 , Zilog Z80 , Freescale 68HC08 y microcontrolador PIC .
- El Amsterdam Compiler Kit (ACK) está dirigido a muchas arquitecturas de la década de 1980, incluidas 6502 , 6800 , 680x0 , ARM , x86 , Zilog Z80 y Z8000 .
- LLVM está orientado a muchas plataformas, pero su principal objetivo no es la generación de código dependiente de la máquina, sino que utiliza una representación intermedia de tipo ensamblador de alto nivel . No obstante, para los objetivos más comunes, el proyecto LLVM MC (código de máquina) ofrece un ensamblador como componente integrado de los compiladores y como herramienta externa.
- Algunas otras implementaciones de lenguajes alojados en servidores propios y orientados a lenguajes nativos (como Go , Free Pascal , SBCL ) tienen sus propios ensambladores con múltiples destinos. Se pueden usar para el ensamblaje en línea dentro del lenguaje, o incluso incluirse como una biblioteca, pero no siempre son adecuados para usarse fuera de su marco de trabajo: no existe ninguna herramienta de línea de comandos, o solo se puede usar la representación intermedia como entrada, o el conjunto de destinos admitidos es muy limitado.
Ensambladores de objetivo único
6502 ensambladores
Ensambladores 680x0
Ensambladores ARM
Ensambladores de mainframe
Ensambladores POWER, PowerPC y Power ISA
ensambladores x86
- ^ Parte del árbol fuente de MINIX 3 , pero sin actividad de desarrollo obvia.
- ^ Desarrollado por Interactive Systems Corporation en 1986 cuando trasladaron UNIX System V a las arquitecturas Intel iAPX286 y 80386. Arquetipo de la sintaxis ATT porque se utilizó como referencia para GAS. Todavía se utiliza paralos productos de The SCO Group , UnixWare y OpenServer .
- ^ Activo, apoyado, pero no publicitado.
- ^ Forma parte de la cadena de herramientas C++Builder , pero no se vende como producto independiente ni se comercializa desde la escisión de CodeGear; Borland lo siguió vendiendo hasta entonces. La versión 5.0, la última, data de 1996.
- ^ Turbo Assembler fue desarrollado como Turbo Editasm por Uriah Barnett de Speedware Inc (Sacramento, CA) entre 1984 y 1987, y luego vendido o comercializado por Borland como su Turbo Assembler.
- ^ La última versión estable 1.3.0 se lanzó en agosto de 2014 y desde entonces ha requerido poco mantenimiento: https://github.com/yasm/yasm
Ensambladores Z80
Otros ensambladores de objetivo único
Redireccionables/ensambladores cruzados
Notas y referencias
- ^ Modificación del ensamblador F de IBM
- ^ Xerox Corporation (1975). Programa de ensamblaje de Xerox (AP) (PDF) . Consultado el 28 de junio de 2023 .
- ^ El proyecto del ensamblador modular Yasm
Enlaces externos
- Lista de ensambladores que se ejecutan en hardware de bus S100, incluidos ensambladores alojados en CP/M para 8080 y Z80