Ensamblador frente a intérprete
Contenidos
Lenguaje ensambladorSalida secundaria típica de un ensamblador: muestra el lenguaje ensamblador original (derecha) para el Motorola MC6800 y la forma ensambladaParadigmaImperativo, no estructuradoApareció por primera vez en 1949; hace 73 años (1949)
En la programación de ordenadores, el lenguaje ensamblador (o lenguaje ensamblador),[1] a veces abreviado como asm, es cualquier lenguaje de programación de bajo nivel en el que existe una gran correspondencia entre las instrucciones del lenguaje y las instrucciones del código máquina de la arquitectura.[2] El lenguaje ensamblador suele tener una sentencia por cada instrucción de máquina (1:1), pero también suele admitir constantes, comentarios, directivas de ensamblador,[3] etiquetas simbólicas de, por ejemplo, ubicaciones de memoria, registros y macros[4][1].
El código ensamblador se convierte en código máquina ejecutable mediante un programa de utilidad denominado ensamblador. El término “ensamblador” se atribuye generalmente a Wilkes, Wheeler y Gill en su libro de 1951 The Preparation of Programs for an Electronic Digital Computer (La preparación de programas para un ordenador digital electrónico),[5] quienes, sin embargo, utilizaron el término para referirse a “un programa que ensambla otro programa que consta de varias secciones en un solo programa”[6] El proceso de conversión se denomina ensamblaje, como en el ensamblaje del código fuente. El paso computacional cuando un ensamblador está procesando un programa se llama tiempo de ensamblaje. El lenguaje ensamblador también puede llamarse código máquina simbólico[7][8].
Programación en ensamblador
en código máquina; patrones de 0’s y 1’s almacenados en palabras de memoria. Al final, sea cual sea el medio utilizado para conseguirlo, el código máquina tiene que colocarse en las direcciones correctas para que la unidad de envío de la CPU ejecute las instrucciones.
A los programadores humanos les resulta difícil escribir programas en código máquina; es difícil de entender, de leer y de recordar. En su lugar, pueden escribir en lenguaje ensamblador ; éste se representará como una lista de caracteres ASCII, formando las letras de las palabras que son más fáciles de entender, más fáciles de leer, más fáciles de recordar; pero corresponden precisamente a las instrucciones que ejecuta la CPU, y pueden ser traducidas a dichas instrucciones.
C es un lenguaje de alto nivel que se compila en lugar de ensamblarse. El proceso de compilación es muy complejo, pero el funcionamiento básico se asemeja al del ensamblaje, con una excepción: cada línea del programa puede producir una o más instrucciones de código máquina (frente a la habitual correspondencia uno a uno entre ensamblador y código máquina).
Diseño del compilador
El compilador convierte el código fuente escrito por el programador en un lenguaje de nivel de máquina. El ensamblador convierte el código ensamblador en código máquina. Un compilador es más inteligente que un ensamblador. Pero un ensamblador es menos inteligente que un compilador.
14 Respuestas. gcc realmente produce ensamblador y lo ensambla usando el como ensamblador. No todos los compiladores hacen esto – los compiladores de MS producen código objeto directamente, aunque puedes hacer que generen salida de ensamblador.
El propósito de un ensamblador es traducir el lenguaje ensamblador a código objeto. Mientras que los compiladores e intérpretes generan muchas instrucciones de código máquina para cada instrucción de alto nivel, los ensambladores crean una instrucción de código máquina para cada instrucción de ensamblaje.
Un ensamblador es un programa que convierte el lenguaje ensamblador en código máquina. Toma los comandos y operaciones básicas del código ensamblador y los convierte en código binario que puede ser reconocido por un tipo específico de procesador. Los ensambladores son similares a los compiladores en el sentido de que producen código ejecutable.
Ensamblador de dos pasadas
Un ensamblador traduce el código ensamblador a código máquina. La traducción es mecánica y sólo puede hacerse de una manera. En cambio, un compilador tiene más libertad a la hora de compilar el lenguaje de programación correspondiente: puede optimizar, por ejemplo, e incluso los compiladores no optimizadores producen un código diferente. Además, los compiladores pueden escribirse de forma que se separen el “front-end” (correspondiente al lenguaje de programación) y el “back-end” (correspondiente a la arquitectura del ordenador), mientras que con los ensambladores los dos son siempre los mismos.
La conclusión es que es más divertido escribir un compilador que un ensamblador. Los lenguajes de ensamblaje suelen estar diseñados para que sean casi triviales de analizar y comprobar el tipo y tienden a implicar muchos generadores basados en tablas (“el opcode para la suma es 01110”, “para las instrucciones de carga el registro del operando de destino se especifica mediante los bits 17 a 21”). Normalmente, la parte más interesante de un ensamblador es la que resuelve las etiquetas simbólicas en números.
Sin embargo, la mayoría de los ensambladores pueden hacer una pequeña cantidad de aritmética (sumar etiquetas simbólicas con pequeñas constantes, por ejemplo) y la mayoría de los ensambladores tienen o están integrados con una facilidad de procesamiento de macros. (En la mayoría de los sistemas Unix, la función de macros se obtiene ejecutando el preprocesador C sobre el ensamblaje antes de pasarlo al ensamblador propiamente dicho).