You are on page 1of 11

GUIA TERCEL PARCIAL

Definir lo que es un compilador


Un compilador es un programa informtico que traduce un programa escrito en
un lenguaje de programacin a otro lenguaje de programacin, generando un programa
equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje
es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o
simplemente texto. Este proceso de traduccin se conoce como compilacin
Menciona un antecedente histrico
En 1946 se desarroll la primera computadora digital. En un principio, estas mquinas
ejecutaban instrucciones consistentes en cdigos numricos que sealaban a los circuitos
de la mquina los estados correspondientes a cada operacin, lo que se
denomin lenguaje mquina.
Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus
programas mediante claves ms fciles de recordar que esos cdigos; al final, todas esas
claves juntas se traducan manualmente a lenguaje mquina. Estas claves constituyen los
llamados lenguajes ensambladores.
Describe un tipo de traductor
Un traductor es un programa que recibe como entrada cdigo escrito en un cierto
lenguaje y produce como salida cdigo en otro lenguaje, generalmente el lenguaje de
entrada es de ms alto nivel que el de salida, por ejemplo, los traductores son los
ensambladores y los compiladores.
Explica la traduccin en Java
Java es una tecnologa que se usa para el desarrollo de aplicaciones que convierten
a la Web en un elemento ms interesante y til. Java no es lo mismo que
javascript, que se trata de una tecnologa sencilla que se usa para crear pginas
web y solamente se ejecuta en el explorador.
Java le permite jugar, cargar fotografas, chatear en lnea, realizar visitas virtuales y
utilizar servicios como, por ejemplo, cursos en lnea, servicios bancarios en lnea y
mapas interactivos. Si no dispone de Java, muchas aplicaciones y sitios web no
funcionarn.
Compilacin en .Net
.NET es un framework de Microsoft que hace un nfasis en la transparencia de redes, con
independencia de plataforma de hardware y que permita un rpido desarrollo

de aplicaciones. Basado en ella, la empresa intenta desarrollar una estrategia horizontal


que integre todos sus productos, desde el sistema operativo hasta las herramientas de
mercado.
.NET podra considerarse una respuesta de Microsoft al creciente mercado de los negocios
en entornos Web, como competencia a la plataforma Java de Oracle Corporation y a los
diversos framework de desarrollo web basados en PHP. Su propuesta es ofrecer una
manera rpida y econmica, a la vez que segura y robusta, de desarrollar aplicaciones o
como la misma plataforma las denomina, soluciones permitiendo una integracin ms
rpida y gil entre empresas y un acceso ms simple y universal a todo tipo de
informacin desde cualquier tipo de dispositivo
Diferencia entre un intrprete y un compilador
Un compilador es un programa informtico que traduce un programa escrito en
un lenguaje de programacin a otro lenguaje de programacin, generando un programa
equivalente que la mquina ser capaz de interpretar.
Intrprete es un programa informtico capaz de analizar y ejecutar otros programas. Los
intrpretes se diferencian de los compiladores o de los ensambladores en que mientras
estos traducen un programa desde su descripcin en un lenguaje de programacin, cdigo
de mquina del sistema, los intrpretes slo realizan la traduccin a medida que sea
necesaria, tpicamente, instruccin por instruccin, y normalmente no guardan el
resultado de dicha traduccin.
Funcin del analizador lxico
Un analizador
lxico y/o analizador
lexicogrfico es
la
primera
fase
de
un compilador consistente en un programa que recibe como entrada el cdigo fuente de
otro programa y produce una salida compuesta de tokens (componentes lxicos) o
smbolos. Estos tokens sirven para una posterior etapa del proceso de traduccin, siendo
la entrada para el analizador sintctico.
Funcin de un rbol sintctico
Si el analizador sintctico genera un rbol sintctico, por lo regular se construye como una
estructura estndar basada en un puntero que se asigna de manera dinmica a medida
que se efecta el anlisis sintctico. El rbol entero puede entonces conservarse como una
variable simple que apunta al nodo raz. Cada nodo en la estructura es un registro cuyos
campos representan la informacin recolectada tanto por el analizador sintctico como,
posteriormente, por el analizador semntico. Por ejemplo, el tipo de datos de una
expresin puede conservarse como un campo en el nodo del rbol sintctico para la
expresin.

Funcionamiento de la tabla de smbolos


una tabla de smbolos es una estructura de datos que usa el proceso de traduccin de
un lenguaje de programacin, por un compilador o un intrprete, donde cada smbolo en
el cdigo fuente de un programa est asociado con informacin tal como la ubicacin,
el tipo de datos y el mbito de cada variable, constante o procedimiento.
Tipo de compilacin
Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber
compiladores que se adscriban a varias categoras:

Compiladores cruzados: generan cdigo para un sistema distinto del que estn
funcionando.

Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia,


pero manteniendo la funcionalidad del programa original.

Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica
lectura del cdigo fuente.

Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de
poder producir el cdigo mquina.

Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del
cdigo segn se necesitan.

Nombre del compilador


Lenguaje
de
alto
Nivel
=>
Java,
C#,
C++,
Visual
Basic
Lenguaje
de
Bajo
Nivel
=>
Lenguaje
Ensamblador
(Assembler)
Compilador => JDK (Java Development Kit Compilador de Java)
Componentes de la plataforma
Smart Clients (Clientes Inteligentes): Son dispositivos muy variados. Lo que los hace
'Smart' o inteligentes es su capacidad para hacer uso de servicios Web.
Sus caractersticas son:

Permiten acceder a la informacin en el formato apropiado, en cualquier momento y


lugar.

Hacen uso de Servicios Web.

Optimizan de distintas maneras la forma en que la informacin es presentada y


organizada. Por ejemplo: Pueden convertir texto en sonido en un celular o reconocer la
escritura en un TabletPC.

Proveen de una interfase sencilla y natural para que el usuario acceda a la informacin.
Pueden utilizar la identidad del usuario, su perfil y datos para adaptar la informacin
que es presentada.

Pueden reconocer la presencia de otros dispositivos e intercambiar informacin.

Pueden adaptarse a las caractersticas de la red donde estn. Por ejemplo la velocidad
de transmisin.

Tienen capacidad de procesamiento propio, y distribuyen el procesamiento en la red


haciendo uso de los servicios Web
Mencionar las funciones
USOS
Los compiladores trabajan en fases, las cuales transforman el programa fuente de una
representacin en otra.
Se usa con el fin de analizar las secciones, administrar la taba de smbolos y manejar los
errores, para esto utiliza el anlisis lxico, anlisis sintctico, anlisis semntico,
generacin de cdigo intermedio, optimacin de cdigo y generacin de cdigo.
Dentro de la caracterstica importante de un compilador es que traduce de un Lenguaje de
alto nivel a uno de bajo nivel.

FUNCION
La funcin principal que cumple es traducir a un lenguaje mucho ms sencillo y entendible
por la mquina, informa al usuario si existen errores en el cdigo fuente con el fin de
ejecutar la aplicacin sin problema, si existe algn error simplemente se detiene.
Tambin registra los identificadores utilizados en el programa fuente y toma la
informacin de los atributos de cada identificador.
Describir el anlisis lxico en un programa
Un analizador lxico y/o analizador lexicogrfico (en ingls scanner) es la primera fase de
un compilador consistente en un programa que recibe como entrada el cdigo fuente de
otro programa (secuencia de caracteres) y produce una salida compuesta
de tokens (componentes lxicos) o smbolos. Estos tokens sirven para una posterior etapa

del proceso de traduccin, siendo la entrada para el analizador sintctico (en


ingls parser).
La especificacin de un lenguaje de programacin a menudo incluye un conjunto de reglas
que definen el lxico. Estas reglas consisten comnmente en expresiones regulares que
indican el conjunto de posibles secuencias de caracteres que definen un token o lexema.
En algunos lenguajes de programacin es necesario establecer patrones para caracteres
especiales (como el espacio en blanco) que la gramtica pueda reconocer sin que
constituya un token en s.
Describir el anlisis sintctico en un programa
Anlisis sintctico: determina si la secuencia de componentes lxicos sigue la sintaxis del
lenguaje y obtiene la estructura jerrquica del programa en forma de rbol, donde los
nodos son las construcciones de alto nivel del lenguaje.
Se determinan las relaciones estructurales entre los componentes lxicos, esto es
semejante a realizar el anlisis gramatical sobre una frase en lenguaje natural. La
estructura sintctica la definiremos mediante las gramticas independientes del contexto.
Como ejemplo consideremos la lnea de cdigo C anterior. Representa un elemento
estructural denominado expresin, la cual es una expresin de asignacin compuesta de
una expresin de subndice a la izquierda y una expresin aritmtica a la derecha (rbol de
anlisis gramatical).
Ilustrar el rbol sintctico

Identificar el cdigo intermedio

Generacin y optimizacin de cdigo intermedio: la optimizacin consiste en la calibracin


del rbol sintctico donde ya no aparecen construcciones de alto nivel. Generando un
cdigo mejorado, ya no estructurado, ms fcil de traducir directamente a cdigo
ensamblador o mquina, compuesto de un cdigo de tres direcciones (cada instruccin
tiene un operador, y la direccin de dos operndoos y un lugar donde guardar el
resultado), tambin conocida como cdigo intermedio.
La etapa de optimizacin slo dependen del lenguaje fuente (y no de la mquina), se
busca principalmente: eliminar sub-expresiones comunes, identificar cdigo muerto,
sustituir operaciones aritmticas, clculo previo de constantes, variables de induccin,
propagacin de copias o cdigo inalcanzable. Suele ser una fase lenta y compleja.
Describir la tabla de smbolos generada
Tabla de Smbolos: es una estructura tipo diccionario con operaciones de insercin,
borrado y bsqueda, que almacena informacin sobre los smbolos que van apareciendo a
lo largo del programa como son:
los identificadores (variables y funciones)
Etiquetas
tipos definidos por el usuario (arreglos, registros, etc.)
Adems almacena el tipo de dato, mtodo de paso de parmetros, tipo de retorno y de
argumentos de una funcin, el mbito de referencia de identificadores y la direccin de
memoria. Interacciona tanto con el analizador lxico, sintctico y semntico que
introducen informacin conforme se procesa la entrada. La fase de generacin de cdigo y
optimizacin tambin la usan.
Definir la actividad de un cargador
Es un programa especial, parte del sistema operativo que tiene como propsito colocar en
la memoria las instrucciones y datos de un programa o informacin codificada en lenguaje
mquina, para que entonces la computadora pueda procesarla.
Un cargador es un programa que realiza la funcin de carga, pero muchos cargadores
tambin incluyen relocalizacin y ligado.
Algunos sistemas tienen un ligado para realizar las operaciones de enlace, y un cargador
separado para manejar la relocalizacin y la carga. Los procesos de ensamblado y carga
estn ntimamente relacionados.

Explica la diferencia entre un cargador y un ligado


La mayor parte de los programas se componen de ms de un procedimiento.
Los compiladores y ensambladores suelen traducir un procedimiento a la vez y guardan en
memoria secundaria el resultado de esta traduccin. Antes de que pueda ejecutarse el
programa, todos los procedimientos traducidos deben recuperarse y ligarse

correctamente. Si no se dispone de memoria virtual, el programa enlazado debe cargarse


explcitamente en memoria.
Los programas que realizan estas funciones reciben varios nombres, como
cargador (loader), cargador montado (linking loader) y editor de enlaces (linkage editor).
La traduccin completa de un programa fuente se efecta en dos pasos:
Compilacin o ensamblaje de los procedimientos fuente
Encadenamiento (linking) o montaje de los mdulos objeto.
Menciona las funciones de un cargador
Colocar un programa objeto en la memoria e iniciar su ejecucin.
Si tenemos un cargador que no necesita realizar las funciones de ligado y relocalizacin de
programas, su operacin es muy simple, pues todas las funciones se realizan en un solo
paso. Se revisa el registro de encabezamiento para comprobar se ha presentado el
programa correcto para la carga (entrando en la memoria disponible). A medida que se
lee cada registro de texto, el cdigo objeto que contiene pasa a la direccin de memoria
indicada. Cuando se encuentra el registro de fin, el cargador salta a al direccin
especificada para iniciar la ejecucin del programa cargado. Un programa objeto contiene
instrucciones traducidas y valores de datos del programa fuente, y especfica direcciones
en memoria donde se cargarn estos elementos.
Las funciones de un cargador son relativamente sencillas y consisten en extraer
informacin de algn medio exterior de la memoria (por ejemplo: CD Discos) y chocarlo en
celdas sucesivas de la memoria a partir de una celda pre especificada. El cargador realiza
la ltima etapa del proceso de traduccin: cargar el programa en memoria donde puede
ser ejecutado.
Una opcin tpica del cargador permite la seleccin de fuentes alternativas de entrada.
Otros mandatos permiten al usuario eliminar smbolos externos o secciones de control
completas.

Menciona las funciones de un ligado


Simple preparacin de un programa objeto para su ejecucin estos tambin se pueden
utilizar para construir paquetes de subrutinas u otras secciones que suelen utilizar juntas.
Esto puede ser til al tratar con bibliotecas de subrutinas que manejan lenguajes de
programacin de alto nivel. Comparados con los cargadores de ligado, los editores de
ligado en general tienden a ofrecer mayor flexibilidad y control con el correspondiente
incremento e complejidad y sobrecarga.
La tarea principal del enlazador es resolver referencias externas lleva a cabo la siguiente
etapa del proceso de traduccin enlazando los mdulos ensambladores y los acervos para
formar un programa completo. En algunos sistemas el cargador simplemente copia el
programa ejecutable a las posiciones de memorias apropiadas.
Sus principales funciones son:

Enlazar cdigo intermedio compilado independientemente en un solo mdulo de carga


resolviendo las diferencias entre Tokens.
Incorpora las denominadas rutinas de libreras en caso de solicitarlas el propio programa.
Su funcin es reducir procedimientos traducidos por separado y enlazarlos para que se
ejecuten como una unidad llamada programa binario ejecutable.
Describe los tipos de ligado
EDITORES DE LIGADO. La diferencia fundamental entre un editor de ligado y un cargador
ligado es: Primero se ensambla o compila el programa fuente, produciendo un programa
objeto (que puede contener varias secciones de control diferentes).
LIGADOR DINAMICO. El ligado dinmico ofrece algunas ventajas sobre los otros tipos de
ligado. Proporciona la posibilidad de cargar las rutinas slo cuando y si se necesitan. Si las
subrutinas son grandes o tienen muchas referencias externas, se pueden conseguir
ahorros considerables de tiempo y espacio de memoria.
LIGADOR DEL SISTEMA VAX. El ligado VAX es un editor de ligado que realiza las mismas
funciones bsicas alcanzadas con anterioridad. La accin del ligado en la creacin de las
secciones de imagen est controlada por ensamblador o compilador por medio de una
secuencia
de
mandatos
que
forman
parte
del
programa
objeto.
EDITOR DE LIGADO DEL SISTEMA /370. Es muy parecido al analizado para SIC/XE. La
tcnica de referencia a un nmero se usa para mejorar la eficiencia. El programa de salida
del editor de ligado se llama mdulo de carga, y puede cargarse en la memoria para su
ejecucin, y suele contener suficiente informacin para permitir que el editor de ligado los
reprocese.
Menciona las caractersticas de un cargador absoluto
Este es un programa que carga cada instruccin del programa objeto en una posicin fija y
preestablecida. Por tanto, cada instruccin tiene una direccin absoluta. El cargador
absoluto lee simplemente la lnea de cdigo objeto que contiene la direccin de inicio de
las instrucciones y datos, y carga las palabras (o bytes) sucesivas en posiciones de
memoria sucesivas.
El cargador absoluto tiene un serio inconveniente cuando se utiliza en sistemas
computadores grandes.
Esto significa que los programas y datos se deben almacenar cada vez en posiciones de
memoria distintas. Si se utilizan cargadores absolutos, el programa objeto se tendr que
modificar para que refleje la nueva posicin de inicio de memoria. Esta es una actividad
larga y sujeta a errores. En tales situaciones, se utilizan cargadores relocatables.
Los cargadores absolutos estn diseados generalmente para verificar cada instruccin
que leen. Si se detecta una instruccin ilegal, se interrumpe el proceso de carga.

Explica las caractersticas del ligado dinmico


Ligado dinmico. En el tiempo de ejecucin del programa, el ligado invoca una funcin,
o mtodo, que existe en algn lugar aparte del cdigo del programa. Esto quiere decir que
la funcin cierta est identificada (con resolucin de su nombre), encontrada, y cargada en
la memoria, con los datos copiados desde el programa hasta variables para ser
manipulados por la funcin, un puntero est puesto en la primera instruccin de la
funcin, todo est puesto en la pila, la funcin corre y los resultados (los datos
modificados) estn regresados para el programa que hizo la llamada.
Ligado dinmico abre la posibilidad de computacin distribuida, pues as no es necesario
tener funciones cargadas en la memoria de la misma mquina donde corren los
programas que llaman estas funciones. De hecho, ni es necesaria que la funcin sea
escrita en el mismo lenguaje. Solo es necesario un mtodo para identificar la funcin
cierta, en termos de datos de entrada y salida y lo que hace la funcin (no como lo hace).
La primera parte se puede hacer con un interface de tipo API. Las dos partes se puede
hacer por medio de algo como el Web Servicies Descripcin Lenguaje, que guarda ests
metadatos en un archivo de XML.
Describe la ligadura de subrutinas
El enlace de una subrutina es la estructura con que se comparte la informacin entere el
involucrado. El involucrado proporciona la direccin de retorno al involucrado como parte
del enlace de subrutina .El involucrado establece lo que resta del enlacen de subrutina en
el programa el cual puede establecer estar vaci.
Ligar un programa consiste en aadir al programa objeto u programa ejecutable .El
ensamblador debe permitir dichas referencias y las rutinas deben esta a su vez en
lenguaje maquina guardadas en alguna elemento accesible por el montador .Dichas
subrutinas se encuentran guardadas en algn elemento accesible por el que se suele
denominarse librera porque ah estn almacenados todas las rutinas externas
susceptibles de ser utilizadas por los diferentes programas del usuario ah va el programa
ligado cuando est realizando el montaje de un programa a buscarlas y las adjunta sal
programa objeto as esto a este proceso se le llama ligadura de rutinas y subrutinas.
Los siguientes puntos son razones para un programa en subprogramas:
Vincular entre lenguajes es decir combinar el poder computacional de un lenguaje de alto
nivel con el eficiente procesamiento del lenguaje ensamblador.
Facilitar el desarrollo de proyectos largos en los cuales equipos diferentes proceden sus
mdulos separadamente.
Incrustar partes de un programa durante su ejecucin a causa del gran tamao del
programa.
Cuando se utilizan subrutinas en unos programas, el cdigo ejecutable de cada una de
ellas debe encontrarse en memoria al tiempo de ejecucin. Para esto antes de cargar un
programa debe ligarse su cdigo objeto de cada una de las subrutinas involucradas por el

obtenido as por un programa ejecutable que tiene tanto el cdigo del mdulo
involucrado como el cdigo de los mdulos involucrados.