PROGRAMACION DE SISTEM A S - · PDF filetraductores de bajo nivel programacion de sistem a s...

104
TRADUCTORES DE BAJO NIVEL PROGRAMACION DE SISTEMAS CATEDRATICO:LIC. ENRIQUE MARTINEZ GUTIERREZ ALUMNOS: RAMÍREZ RESENDIZ BALDEMAR RUÍZ MORALES ROBERTO C. MARTÍNEZ RAMÍREZ PEDRO F. GUZMÁN GUTIÉRREZ PEDRO A. - [email protected] GRADO Y GRUPO: 4º “A” TAPACHULA DE CORDOVA Y ORDOÑEZ, CHIAPAS A 8 DE SEPTIEMBRE DE 2006

Transcript of PROGRAMACION DE SISTEM A S - · PDF filetraductores de bajo nivel programacion de sistem a s...

  • TRADUCTORES DE BAJO NIVEL

    PROGRAMACION DE SISTEM AS

    CATEDRATICO:LIC. ENRIQUE MARTINEZ GUTIERREZ

    ALUMNOS:RAMREZ RESENDIZ BALDEMAR

    RUZ MORALES ROBERTO C.MARTNEZ RAMREZ PEDRO F.

    GUZM N GU TIRRE Z PEDRO A. - [email protected]

    GRADO Y GRUPO: 4 A

    TAPACHULA DE CORDOVA Y ORDOEZ, CHIAPAS A 8 DESEPTIEMBRE DE 2006

  • Unidad 1:TRADUCTORES DE BAJO NIVEL

    QU ES UN TRADUCTOR?

    Un traductor es cualquier programa que toma como entrada un texto escrito en unlenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominadoobjeto.

    En el caso de que el lenguaje fuente sea un lenguaje de programacin de altonivel y el objeto sea un lenguaje de bajo nivel (ensamblador o cdigo de mquina),a dicho traductor se le denomina compilador. Un ensamblador es un compiladorcuyo lenguaje fuente es el lenguaje ensamblador. Un intrprete no genera unprograma equivalente, sino que toma una sentencia del programa fuente en unlenguaje de alto nivel y la traduce al cdigo equivalente y al mismo tiempo loejecuta. Histricamente, con la escasez de memoria de los primeros ordenadores,se puso de moda el uso de intrpretes frente a los compiladores, pues el programafuente sin traducir y el intrprete juntos daban una ocupacin de memoria menorque la resultante de los compiladores. Por ello los primeros ordenadorespersonales iban siempre acompaados de un intrprete de BASIC (Spectrum,Commodore VIC-20, PC XT de IBM, etc.). La mejor informacin sobre los errorespor parte del compilador as como una mayor velocidad de ejecucin del cdigoresultante hizo que poco a poco se impusieran los compiladores. Hoy en da, y conel problema de la memoria prcticamente resuelto, se puede hablar de un granpredominio de los compiladores frente a los intrpretes, aunque intrpretes comolos incluidos en los navegadores de Internet para interpretar el cdigo JVM deJava son la gran excepcin.

    Ventajas de compilar frente a interpretar:

    Se compila una vez, se ejecuta n veces.

    En bucles, la compilacin genera cdigo equivalente al bucle, pero interpretndolose traduce tantas veces una lnea como veces se repite el bucle.

    El compilador tiene una visin global del programa, por lo que la informaci

    Ventajas del intrprete frente al compilador:

  • Un intrprete necesita menos memoria que un compilador. En principio eran msabundantes dado que los ordenadores tenan poca memoria.

    Permiten una mayor interactividad con el cdigo en tiempo de desarrollo.

    Un compilador no es un programa que funciona de manera aislada, sino quenecesita de otros programas para conseguir su objetivo: obtener un programaejecutable a partir de un programa fuente en un lenguaje de alto nivel. Algunos deesos programas son el preprocesador, el linker, el depurador y el ensamblador. Elpreprocesador se ocupa (dependiendo del lenguaje) de incluir ficheros, expandirmacros, eliminar comentarios, y otras tareas similares. El linker se encarga deconstruir el fichero ejecutable aadiendo al fichero objeto generado por elcompilador las cabeceras necesarias y las funciones de librera utilizadas por elprograma fuente. El depurador permite, si el compilador ha generadoadecuadamente el programa objeto, seguir paso a paso la ejecucin de unprograma. Finalmente, muchos compiladores, en vez de generar cdigo objeto,generan un programa en lenguaje ensamblador que debe despus convertirse enun ejecutable mediante un programa ensamblador.

    TRADUCTORES DE BAJO NIVEL

    SB1 Ensambladores. Funcin de un ensamblador. Estructuras de informacinnecesarias. Procedimientos especficos para el proceso de ensamble. Pasadas deltexto fuente. Tablas previamente construidas y tablas generadas en el ensamble.Tratamiento de operandos y modos de direccionamiento de la mquina objeto.Ensambladores residentes y cruzados. Ensamble condicional y su relacin con elmacroensamble.SB2 Macroensambladores. Definicin de macroinstrucciones en ensamblador.Expansin de macroinstrucciones. Macroinstrucciones con parmetros. Ensamblecondicional. Macrollamadas. Tablas y pasos del macroensamblador. Relacin conel ensamblador.SB3 Macroprocesadores. Macros: definicin y expansin simple, paramtrica, conanidamiento, etc. Tablas asociadas. Bibliotecas de macros. Expansin condicional.Variables y operadores del proceso de expansin. Pasadas del texto fuente(preprocesamiento).

  • VENTAJAS Y DESVENTAJAS DEL LENGUAJE ENSAMBLADOR

    Una vez que hemos visto la evolucin de los lenguajes, cabe preguntarse: Enestos tiempos "modernos", para qu quiero el Lenguaje Ensamblador?

    El proceso de evolucin trajo consigo algunas desventajas, que ahora veremoscomo las ventajas de usar el Lenguaje Ensamblador, respecto a un lenguaje dealto nivel:

    Velocidad Eficiencia de tamao Flexibilidad Por otro lado, al ser un lenguaje ms primitivo, el Ensamblador tiene ciertas

    desventajas respecto a los lenguajes de alto nivel: Tiempo de programacin Programas fuente grandes Peligro de afectar recursos inesperadamente Falta de portabilidad Velocidad

    El proceso de traduccin que realizan los intrpretes, implica un proceso decmputo adicional al que el programador quiere realizar. Por ello, nosencontraremos con que un intrprete es siempre ms lento que realizar la mismaaccin en Lenguaje Ensamblador, simplemente porque tiene el costo adicional deestar traduciendo el programa, cada vez que lo ejecutamos.De ah nacieron los compiladores, que son mucho ms rpidos que los intrpretes,pues hacen la traduccin una vez y dejan el cdigo objeto, que ya es Lenguaje deMquina, y se puede ejecutar muy rpidamente. Aunque el proceso de traduccines ms complejo y costoso que el de ensamblar un programa, normalmentepodemos despreciarlo, contra las ventajas de codificar el programa msrpidamente.

    Sin embargo, la mayor parte de las veces, el cdigo generado por un compiladores menos eficiente que el cdigo equivalente que un programador escribira. Larazn es que el compilador no tiene tanta inteligencia, y requiere ser capaz decrear cdigo genrico, que sirva tanto para un programa como para otro; encambio, un programador humano puede aprovechar las caractersticas especficasdel problema, reduciendo la generalidad pero al mismo tiempo, no desperdicianinguna instruccin, no hace ningn proceso que no sea necesario.Para darnos una idea, en una PC, y suponiendo que todos son buenosprogramadores, un programa para ordenar una lista tardar cerca de 20 vecesms en Visual Basic (un intrprete), y 2 veces ms en C (un compilador), que elequivalente en Ensamblador. Por ello, cuando es crtica la velocidad del programa,Ensamblador se vuelve un candidato lgico como lenguaje.

    http://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm#velocidadhttp://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm#tamanohttp://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm#flexibilidadhttp://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm#tiempohttp://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm#fuentegrandehttp://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm#afectarhttp://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm#portabilidad

  • Ahora bien, esto no es un absoluto; un programa bien hecho en C puede sermuchas veces ms rpido que un programa mal hecho en Ensamblador; siguesiendo sumamente importante la eleccin apropiada de algoritmos y estructurasde datos. Por ello, se recomienda buscar optimizar primero estos aspectos, en ellenguaje que se desee, y solamente usar Ensamblador cuando se requiere msoptimizacin y no se puede lograr por estos medios.Tamao

    Por las mismas razones que vimos en el aspecto de velocidad, los compiladores eintrpretes generan ms cdigo mquina del necesario; por ello, el programaejecutable crece. As, cuando es importante reducir el tamao del ejecutable,mejorando el uso de la memoria y teniendo tambin beneficios en velocidad,puede convenir usar el lenguaje Ensamblador. Entre los programas que es crticoel uso mnimo de memoria, tenemos a los virus y manejadores de dispositivos(drivers). Muchos de ellos, por supuesto, estn escritos en lenguaje Ensamblador.Flexibilidad

    Las razones anteriores son cuestin de grado: podemos hacer las cosas en otrolenguaje, pero queremos hacerlas ms eficientemente. Pero todos los lenguajesde alto nivel tienen limitantes en el control; al hacer abstracciones, limitan supropia capacidad. Es decir, existen tareas que la mquina puede hacer, pero queun lenguaje de alto nivel no permite. Por ejemplo, en Visual Basic no es posiblecambiar la resolucin del monitor a medio programa; es una limitante, impuestapor la abstraccin del GUI Windows. En cambio, en ensamblador es sumamentesencillo, pues tenemos el acceso directo al hardware del monitor.Resumiendo, la flexibilidad consiste en reconocer el hecho de queTodo lo que puede hacerse con una mquina, puede hacerse en el lenguajeensamblador de esta mquina; los lenguajes de alto nivel tienen en una u otraforma limitantes para explotar al mximo los recursos de la mquina.

    Tiempo de programacin

    Al ser de bajo nivel, el Lenguaje Ensamblador requiere ms instrucciones pararealizar el mismo proceso, en comparacin con un lenguaje de alto nivel. Por otrolado, requiere de ms cuidado por parte del programador, pues es propenso a quelos errores de lgica se reflejen ms fuertemente en la ejecucin.

    Por todo esto, es ms lento el desarrollo de programas comparables en LenguajeEnsamblador que en un lenguaje de alto nivel, pues el programador goza de unamenor abstraccin.

  • Programas fuente grandes

    Por las mismas razones que aumenta el tiempo, crecen los programas fuentes;simplemente, requerimos ms instrucciones primitivas para describir procesosequivalentes. Esto es una desventaja porque dificulta el mantenimiento de losprogramas, y nuevamente reduce la productividad de los programadores.

    Peligro de afectar recurso