Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
41 vistas9 páginas

Exposicion Lenguaje de Maquina

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 9

PROGRAMACION DEL

MICROPROCESADOR

ENSAMBLADOR
COMPILADORES
DEPURADORES

PRESENTADO POR:
SANDRA BOHORQUEZ

MATERIA:
LENGUAJE DE MAQUINA
EMSAMBLADOR

El término ensamblador (del inglés assembler) se


refiere a un tipo de programa informático que se
encarga de traducir un fichero fuente escrito en
un lenguaje ensamblador, a un fichero objeto que
contiene código máquina, ejecutable directamente por
la máquina para la que se ha generado. El propósito
para el que se crearon este tipo de aplicaciones es
la de facilitar la escritura de programas, ya que
escribir directamente en código binario, que es el
único código entendible por la computadora, es en la
práctica imposible. La evolución de los lenguajes de
programación a partir del lenguaje ensamblador
originó también la evolución de este programa
ensamblador hacia lo que se conoce como
programacompilador.
Tipos de ensambladores

Ensambladores básicos. Son de muy bajo nivel, y su tarea consiste


básicamente en ofrecer nombres simbólicos a las
distintas instrucciones, parámetros y cosas tales como los modos de
direccionamiento. Además, reconoce una serie de directivas (o meta
instrucciones) que indican ciertos parámetros de funcionamiento del
ensamblador.

Ensambladores modulares, o macro ensambladores. Descendientes de los


ensambladores básicos, fueron muy populares en las décadas de los 50 y
los 60, antes de la generalización de los lenguajes de alto nivel.
Hacen todo lo que puede hacer un ensamblador, y además proporcionan una
serie de directivas para definir e invocar macroinstrucciones (o
simplemente, macros). Véase X86.

Ensambladores modulares 32-bits o de alto nivel. Son ensambladores que


aparecieron como respuesta a una nueva arquitectura de procesadores de
32 bits, muchos de ellos teniendo compatibilidad hacia atrás pudiendo
trabajar con programas con estructuras de 16 bits. Además de realizar
la misma tarea que los anteriores, permitiendo también el uso de
macros, permiten utilizar estructuras de programación más complejas
propias de los lenguajes de alto nivel.
Compilador

Un compilador es un programa informático que traduce un


programa escrito en un lenguaje de programación a otro lenguaje de
programación, generando un programa equivalente que la máquina será
capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de
máquina, pero también puede ser un código intermedio (bytecode), o
simplemente texto. Este proceso de traducción se conoce
como compilación.1
Un compilador es un programa que permite traducir el código
fuente de un programa en lenguaje de alto nivel, a otro lenguaje de
nivel inferior (típicamente lenguaje de máquina). De esta manera un
programador puede diseñar un programa en un lenguaje mucho más
cercano a como piensa un ser humano, para luego compilarlo a un
programa más manejable por una computadora.
Partes de un compilador

La construcción de un compilador involucra la división del proceso


en una serie de fases que variará con su complejidad. Generalmente
estas fases se agrupan en dos tareas: el análisis del programa
fuente y la síntesis del programa objeto.

Análisis: Se trata de la comprobación de la corrección del programa


fuente, e incluye las fases correspondientes al Análisis

Léxico (que consiste en la descomposición del programa fuente en


componentes léxicos), Análisis Sintáctico(agrupación de los
componentes léxicos en frases gramaticales ) y Análisis

Semántico (comprobación de la validez semántica de las sentencias


aceptadas en la fase de Análisis Sintáctico).

Síntesis: Su objetivo es la generación de la salida expresada en


el lenguaje objeto y suele estar formado por una o varias
combinaciones de fases de Generación de Código (normalmente se
trata de código intermedio o de código objeto) y de Optimización de
Código (en las que se busca obtener un código lo más eficiente
posible).
Alternativamente, las fases descritas para las tareas de análisis y
síntesis se pueden agrupar en Front-end y Back-end:

Front-end: es la parte que analiza el código fuente, comprueba su


validez, genera el árbol de derivación y rellena los valores de
la tabla de símbolos. Esta parte suele ser independiente de la
plataforma o sistema para el cual se vaya a compilar, y está
compuesta por las fases comprendidas entre el Análisis Léxico y la
Generación de Código Intermedio.

Back-end: es la parte que genera el código máquina, específico de


una plataforma, a partir de los resultados de la fase de análisis,
realizada por el Front End.
Esta división permite que el mismo Back End se utilice para generar
el código máquina de varios lenguajes de programación distintos y
que el mismo Front End que sirve para analizar el código fuente de
un lenguaje de programaciónconcreto sirva para generar código
máquina en varias plataformas distintas. Suele incluir la
generación y optimización del código dependiente de la máquina.
El código que genera el Back End normalmente no se puede ejecutar
directamente, sino que necesita ser enlazado por un
programa enlazador (linker)
Tipos de compiladores

Esta taxonomía de los tipos de compiladores no es excluyente, por


lo que puede haber compiladores que se adscriban a varias
categorías:

Compiladores cruzados: generan código para un sistema distinto del


que están funcionando.

Compiladores optimizadores: realizan cambios en el código para


mejorar su eficiencia, pero manteniendo la funcionalidad del
programa original.

Compiladores de una sola pasada: generan el código máquina a partir


de una única lectura del código fuente.
Compiladores de varias pasadas: necesitan leer el código fuente
varias veces antes de poder producir el código máquina.
Compiladores JIT (Just In Time): forman parte de un intérprete y
compilan partes del código según se necesitan.
Depurador

Un depurador (en inglés, debugger), es un programa usado para


probar y depurar (eliminar los errores) de otros programas (el
programa "objetivo"). El código a ser examinado puede
alternativamente estar corriendo en un simulador de conjunto de
instrucciones (ISS), una técnica que permite gran potencia en su
capacidad de detenerse cuando son encontradas condiciones
específicas pero será típicamente algo más lento que ejecutando el
código directamente en el apropiado (o el mismo) procesador.
Algunas depuradores ofrecen dos modos de operación - la simulación
parcial o completa, para limitar este impacto.
Uso
El depurador lanza el programa a depurar. Éste se ejecuta
normalmente hasta que el depurador detiene su ejecución,
permitiendo al usuario examinar la situación.
El depurador permite detener el programa en:
Un punto determinado mediante un punto de ruptura.
Un punto determinado bajo ciertas condiciones mediante un punto de
ruptura condicional.
Un momento determinado cuando se cumplan ciertas condiciones.
Un momento determinado a petición del usuario.
Durante esa interrupción, el usuario puede:
Examinar y modificar la memoria y las variables del programa.
Examinar el contenido de los registros del procesador.
Examinar la pila de llamadas que han desembocado en la situación
actual.
Cambiar el punto de ejecución, de manera que el programa continúe
su ejecución en un punto diferente al punto en el que fue detenido.
Ejecutar instrucción a instrucción.
Ejecutar partes determinadas del código, como el interior de una
función, o el resto de código antes de salir de una función.
El depurador depende de la arquitectura y sistema en el que se
ejecute, por lo que sus funcionalidades cambian de un sistema a
otro. Aquí se han mostrado las más comunes.

También podría gustarte