Ensamblador (del inglés ensamblador - ensamblador): un traductor de programas de texto en lenguaje ensamblador a un programa en lenguaje de máquina .
Al igual que el lenguaje en sí, los ensambladores tienden a ser específicos de una arquitectura , un sistema operativo y una variante de sintaxis particulares del lenguaje, ya que operan con mnemónicos de instrucciones de máquina de un procesador en particular. A su vez, los ensambladores pueden ser multiplataforma o completamente universales, es decir, pueden trabajar en diferentes plataformas y sistemas operativos. Entre los ensambladores, también se puede distinguir un grupo de ensambladores cruzados , que tienen la capacidad de ensamblar código máquina y módulos ejecutables (archivos) para arquitecturas distintas a la arquitectura y/o sistema operativo en el que trabaja el ensamblador mismo (por ejemplo, traducción de un programa para un microcontrolador por un ensamblador que se ejecuta en una computadora ).
Muchos ensambladores modernos son macroensambladores (del griego μάκρος - grande, extenso), es decir, macroprocesadores basados en lenguaje ensamblador [1] . Además de las macros, los ensambladores ejecutan otras directivas durante la traducción , cuyo conjunto no depende de la plataforma de hardware para la que se traduce el programa, sino del propio traductor.
El ensamblaje puede no ser el primer o último paso en el camino para obtener un módulo de programa ejecutable. Por lo tanto, muchos compiladores de lenguajes de programación de alto nivel producen el resultado en forma de un programa en lenguaje ensamblador, que luego es procesado por el ensamblador. A su vez, el resultado del ensamblaje puede no ser un ejecutable, sino un módulo de objeto que contiene bloques separados de código de máquina y datos de programa, de los cuales (o de varios módulos de objeto) se puede obtener más tarde un archivo ejecutable utilizando un enlazador (linker) .
A diferencia de la compilación de programas en lenguajes de alto nivel , el ensamblado es un proceso más o menos inequívoco y reversible, ya que en lenguaje ensamblador cada mnemónico corresponde a una instrucción de máquina, mientras que en lenguajes de alto nivel cada expresión puede convertirse en una gran cantidad de diferentes instrucciones (operación, el reverso del montaje se llama desmontaje ). La traducción de programas ensambladores a veces también se denomina compilación.
Los ensambladores más conocidos para el sistema operativo DOS fueron Borland Turbo Assembler ( TASM ), Microsoft Macro Assembler ( MASM ) y Watcom Assembler (WASM). También en un momento, el ensamblador simple A86 fue popular.
Con la llegada del sistema operativo Windows, apareció una extensión de TASM llamada TASM 5+ (un paquete no oficial creado por una persona con el apodo de neonovd'), que hizo posible crear programas para ejecutar en el entorno de Windows. La última versión conocida de TASM es la 5.3, que admite instrucciones MMX y actualmente se incluye en Turbo C++ Explorer . Pero oficialmente el desarrollo del programa está completamente detenido. El compilador recibió su último desarrollo gracias al moderno entorno de desarrollo TASM Visual. El entorno no es oficial, pero con su ayuda, el trabajo con el compilador se simplifica enormemente.
Microsoft mantiene su producto llamado Microsoft Macro Assembler . Continúa evolucionando hasta el día de hoy, con las últimas versiones incluidas en los DDK . Pero la versión del programa destinada a crear programas para DOS no se está desarrollando. Además, Stephen Hutchesson creó un paquete de programación MASM llamado "MASM32".
El sistema operativo GNU incluye el paquete binutils , que incluye el ensamblador GAS (GNU Assembler) que usa la sintaxis de AT&T , a diferencia de la mayoría de los otros ensambladores populares que usan la sintaxis de Intel (compatible desde la versión 2.10).
También hay un proyecto de ensamblador abierto, cuyas versiones están disponibles para varios sistemas operativos, y que le permite obtener archivos de objetos para estos sistemas. Este ensamblador se llama NASM (Netwide Assembler).
Yasm es una versión reescrita de NASM con licencia desde cero bajo la licencia BSD (con algunas excepciones).
ensamblador plano (fasm) es un ensamblador joven bajo una licencia BSD modificada para prohibir la renovación de licencias (incluso bajo la GPL de GNU ). Existen versiones para KolibriOS , Linux , DOS y Windows ; utiliza sintaxis Intel y admite instrucciones x86-64 .
MCS-51 ( Intel 8051 ) es una arquitectura de microcontrolador clásica. Para ello se cuenta con un ensamblador cruzado ASM51, lanzado por MetaLink Corporation .
Además, muchas empresas de software, como IAR o Keil, presentaron sus versiones en ensamblador. En algunos casos, el uso de estos ensambladores es más eficiente debido a un conjunto conveniente de directivas y la presencia de un entorno de programación que combina un ensamblador profesional y el lenguaje de programación C, un depurador y un administrador de proyectos de software.
Actualmente hay 4 compiladores Atmel para AVR ( AVRStudio 3, AVRStudio 4, AVRStudio 5 y AVRStudio 6, AVRStudio 7).
Dentro del marco del proyecto AVR-GCC (también conocido como WinAVR ), hay un compilador avr-as (este es el GNU como ensamblador portado para AVR desde GCC ).
También hay un compilador minimalista gratuito avra [2] .
Compiladores de pago: IAR (EWAVR), CodeVisionAVR, Imagecraft. Estos compiladores son compatibles con Assembler y C, e IAR también es compatible con C++.
Hay un compilador del lenguaje BASIC - BASCOM, también de pago.
Para los procesadores ARM, existe una variedad bastante amplia de compiladores, cuya implementación interna depende directamente del fabricante del procesador ARM dado o del desarrollador del IDE para trabajar con procesadores ARM. El compilador ARM oficial, directamente de la empresa ARM , es ARM Compiler 6 , que se incluye en el IDE de DS-5 Development Studio y admite la compilación de programas C y C++ .
Compiladores de proveedores de procesadores ARM y desarrolladores de cadenas de herramientas ARM:
proveedor de IDE | Compilador | Idiomas admitidos | Términos de Uso |
---|---|---|---|
Keil mVision | MDK-BRAZO | C / C++ / Ensamblador | Shareware (no más de 32kb) |
Banco de trabajo integrado IAR | Compilador IAR | C / C++ / Ensamblador | Comercial |
CODIGO | compilador gcc. | C / C++ /Ensamblador. | Gratis/Comercial |
verdadero estudio | Compilador GCC precompilado. | C / C++ / Ensamblador | Gratis/Comercial |
El entorno de desarrollo lanzado por Microchip Technology para crear, editar y depurar programas para microcontroladores de la familia PIC es MPLAB . El entorno incluye traductores de lenguaje ensamblador MPASM y ASM30 para varias familias de microcontroladores PIC. Las versiones modernas de MPLAB X IDE son multiplataforma y funcionan con varios sistemas operativos para computadoras. El medio se distribuye de forma gratuita.
El conjunto de herramientas de desarrollo de software PowerPC de IBM incluye un ensamblador para PowerPC .
Es un sucesor del ensamblador de ensamblador plano (fasm) con una sintaxis similar, pero a diferencia de fasm, no está vinculado a ninguna arquitectura de procesador. Su paradigma es la formación de archivos de salida de cualquier formato y con código máquina mediante macros para cualquier arquitectura de procesador. Además de macros, fasmg contiene los llamados. Las instrucciones CALM (literalmente, "instrucciones de ensamblaje compiladas similares a macros") son instrucciones nativas de máquinas virtuales de ensamblador, equivalentes a macros, que el traductor convierte en código de bytes. La arquitectura de estas instrucciones CALM puede considerarse la arquitectura "nativa" del ensamblador fasmg. El kit incluye conjuntos de instrucciones CALM para emular compatibilidad con instrucciones de arquitectura AVR x86, x64, 8052; el desarrollador puede describir conjuntos de instrucciones CALM para admitir cualquier otra arquitectura, admitir cualquier formato de archivo de salida. Las variaciones del traductor están disponibles para Mac OS , Linux y Windows [3] [4] [5] .
lenguaje ensamblador | |
---|---|
IDE | |
traductores | |
Formatos de sintaxis |
Microcontroladores | ||||||||
---|---|---|---|---|---|---|---|---|
Arquitectura |
| |||||||
Fabricantes |
| |||||||
Componentes | ||||||||
Periferia | ||||||||
Interfaces | ||||||||
sistema operativo | ||||||||
Programación |
|
Lenguajes de programación | |
---|---|
|