You are on page 1of 6

Optimizaciones Las optimizaciones realizadas en el cdigo objetivo se denominan optimizaciones de mirilla, ya que el compilador generalmente examina pequeas secciones

de cdigo objetivo para descubrir estas optimizaciones Otras optimizaciones son: Local, Global y Interprocedural Locales. Son aquellas que se aplican a segmentos lineales de cdigo, es decir secuencias de cdigo sin saltos dentro o fuera de la secuencia. Son aquellas que se encuentran restringidas a bloques bsicos. Una secuencia de cdigo lineal se conoce como bloque bsico Las optimizaciones globales son aquellas que se extienden ms all de los bloques bsicos Optimizaciones interprocedurales. Son las que se extienden ms all de los procedimientos Costo de Ejecucin Optimizacin Los costos de ejecucin son aquellos que vienen implcitos al ejecutar el programa. En algunos programas se tiene un mnimo para ejecutar el programa, por lo que el espacio y la velocidad del microprocesadores son elementos que se deben optimizar para tener un mercado potencial ms amplio. Las aplicaciones multimedia como los videojuegos tienen un costo de ejecucin alto por lo cual la optimizacin de su desempeo es crtico, la gran mayora de las veces requieren de procesadores rpidos ( tarjetas de video) o de mucha memoria. Otro tipo de aplicaciones que deben optimizarse son las aplicaciones para dispositivos mviles. Los dispositivos mviles tienen recursos ms limitados que un dispositivo de cmputo convencional razn por la cual, el mejor uso de memoria y otros recursos de hardware tiene mayor rendimiento. Operaciones costosas. Un generador de cdigo no slo debera buscar operaciones innecesarias, para tratar de reducir el costo de operaciones que son necesarias, pero que se pueden implementar de maneras ms econmicas, lo que puede indicar el cdigo fuente o una implementacin simple. Un ejemplo tpico es el reemplazo de las operaciones aritmticas por operaciones ms econmicas. Ejemplo, la multiplicacin por 2 puede implementarse como una operacin de desplazamiento, y una potencia entera pequea, tal como x3, puede implementarse como una multiplicacin, como x * x * x. Esta optimizacin se conoce como reduccin de potencia. Esto puede extenderse de varias formas, como el reemplazo de multiplicaciones que involucre pequeas constantes enteras mediante desplazamientos y sumas (por ejemplo, reemplazando 5*x por 2*2*x+x: dos desplazamientos y una suma). . 7.2.2 Criterios para Mejorar Cdigo La mejor manera de optimizar el cdigo es hacer ver a los programadores que optimicen su cdigo desde el inicio, el problema radica en que el costo podra ser muy grande ya que tendra que codificar ms y/o hacer su cdigo ms legible. Los criterios de optimizacin siempre estn definidos por el compilador. Muchos de estos criterios pueden modificarse con directivas del compilador desde el cdigo o de manera externa. Este proceso lo realizan algunas herramientas del sistema como los ofuscadores para cdigo mvil y cdigo para dispositivos mviles. 7.2.3 Herramientas para Anlisis del Flujo de Datos Existen algunas herramientas que permiten el anlisis de los flujos de datos, entre ellas tenemos los depuradores y desensambladores. La optimizacin al igual que la programacin es un arte y no se ha podido sistematizar del todo.

UNIDAD 8. LENGUAJE MQUINA


8.1 Lenguaje Maquina Caractersticas Un lenguaje de programacin de bajo nivel es el que proporciona poca o ninguna abstraccin del microprocesador de un ordenador. Consecuentemente es fcilmente trasladado a lenguaje de mquina. La palabra bajo no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se refiere a la reducida abstraccin entre el lenguaje y el hardware. Uso: ventajas e inconvenientes.En general se utiliza este tipo de lenguaje para programar controladores (drivers). La programacin en un lenguaje de bajo nivel como el lenguaje de la mquina o el lenguaje simblico tiene ciertas ventajas: Mayor adaptacin al equipo. Posibilidad de obtener la mxima velocidad con mnimo uso de memoria. Pero tambin tiene importantes inconvenientes: Imposibilidad de escribir cdigo independiente de la mquina. Mayor dificultad en la programacin y en la comprensin de los programas. El programador debe conocer ms de un centenar de instrucciones. Caractersticas Se trabaja a nivel de instrucciones, es decir, su programacin es al ms fino detalle. Est orientado a la mquina. Primera generacin El lenguaje de programacin de primera generacin (por sus siglas en ingls, 1GL), es el lenguaje de cdigo mquina. Es el nico lenguaje que un microprocesador entiende de forma nativa. El lenguaje mquina no puede ser escrito o ledo usando un editor de texto, y por lo tanto es raro que una persona lo use directamente. Segunda generacin El lenguaje de programacin de segunda generacin (por sus siglas en ingls, 2GL), es el lenguaje ensamblador. Se considera de segunda generacin porque, aunque no es lenguaje nativo del microprocesador, un programador de lenguaje ensamblador debe conocer la arquitectura del microprocesador (como por ejemplo las particularidades de sus registros o su conjunto de instrucciones). 8.1.2 Direccionamiento Lenguaje Maquina Es la forma en cmo se accede a la memoria. Recordar que un programa no puede ejecutarse sino se encuentra en memoria principal. La forma de acceder a la memoria depende del microprocesador, pero en general existen dos tipos de direccionamiento: directo e indirecto. El direccionamiento directo tambin recibe el nombre de direccionamiento absoluto y el acceso a las direcciones se hace de manera directa. El direccionamiento indirecto tambin recibe el nombre de direccionamiento relativo y se basa a partir de una direccin genrica, generalmente el inicio del programa. Para acceder a una direccin relativa se suma a la direccin base el nmero de espacios de memorias necesarias. El direccionamiento relativo hace a los programas relocalizables e independientes. Si la direccin base es el inicio de la memoria fija el direccionamiento pasa a ser un variante de direccionamiento absoluto. 8.2 Lenguaje Ensamblador Caractersticas

El lenguaje Ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos. Ensambladores: Un ensamblador crea cdigo objeto traduciendo instrucciones mnemnicas a cdigos operativos, e interpretando los nombres simblicos para direcciones de memoria y otras entidades. El uso de referencias simblicas es una caracterstica bsica de los ensambladores, evitando tediosos clculos y direccionamiento manual despus de cada modificacin del programa. La mayora de los ensambladores tambin incluyen facilidades para crear macros, a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas. Los ensambladores son por lo general ms fciles de programar que los compiladores de lenguajes de alto nivel, y han estado disponibles desde la dcada de 1950. Los ensambladores modernos, especialmente para arquitecturas basadas en RISC, como por ejemplo MIPS, SPARC y PA-RISC optimizan las instrucciones para explotar al mximo la eficiencia de segmentacin del CPU. 8.2.2 Almacenamiento Lenguaje Ensamblador Una de las principales ventajas del uso del ensamblador, es que se encarga de administrar de manera transparente para el usuario la creacin de memoria, las bifurcaciones y el paso de parmetros. Adems nos permite acceder directamente a los recursos de la mquina para un mejor desempeo. El lenguaje ensamblador juega dos papeles: Es el lenguaje de salida de los compiladores. Un compilador traduce un programa Escrito en lenguaje de alto nivel (lenguaje fuente, C) en un programa equivalente en Lenguaje mquina o ensamblador (lenguaje objeto). Es un lenguaje ms con el que escribir programas en los que la velocidad o Tamao son crticos, o para explotar las caractersticas hardware que no tienen anlogos en lenguajes de alto nivel. 8.3 Registros Lenguaje Ensamblador Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Los registros son espacios fsicos dentro del microprocesador con capacidad de 4 bits hasta 64 bits dependiendo del microprocesador que se emplee. Los registros son direccionables por medio de una vieta, que es una direccin de memoria. Los bits, por conveniencia, se numeran de derecha a izquierda (15, 14, 13. 3, 2, 1, 0), los registros estn divididos en seis grupos los cuales tienen un fin especfico. Los registros se dividen en: Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propsitos generales Registro ndice Registro de bandera. AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en las operaciones aritmticas y lgicas, despus de la operacin arroja un resultado.

BX = Registro base, dividido en BH y BL.- Se utiliza en transferencias de datos entre la memoria y el procesador. CX = Registro contador, dividido en CH y CL.- Se utiliza como contador en bucles (LOOP), en operaciones con cadenas (REP), y en desplazamientos (CL). DX = Registro de datos, dividido en DH y DL.- Se utiliza en operaciones de multiplicacin y divisin junto con Ax y en operaciones de entrada y salida de puertos, su mitad inferior DL contiene el nmero de puertos. 8.3.1 Distribucin Lenguaje Ensamblador La distribucin es el proceso en el que el programa generado puede ejecutarse en otras mquinas. Con respecto al ensamblador, la mayora del direccionamiento se hace relativo para que el programa sea relocalizable por un programa llamado cargador. En el caso de programas compiladores se necesitan de las libreras, si son estticos se incluyen en el ejecutable por lo que el programa se hace grfico, si son dinmicas no pero el programa es ms pequeo. Debido a la complejidad del software actual se necesitan de asistentes para poder instalar y ejecutar un programa. 8.3.2 Asignacin Lenguaje Ensamblador La asignacin de valores a variables se hace a travs de un proceso de mover el contenido de memoria a registro, o de registro a memoria, pero nunca de memoria a memoria. Cuando se trata de memoria dinmica se debe seguir el rastro de los datos. 8.4 Administracin Memoria Lenguaje Ensamblador La administracin de la memoria es un proceso hoy en da muy importante, de tal modo que su mal o buen uso tiene una accin directa sobre el desempeo de memoria. En general un ensamblador tiene un administrador de memoria ms limitado que un compilador. En la mayora de los lenguajes de programacin el uso de punteros no estaba vigilado por lo que se tienen muchos problemas con el uso de memoria. Los lenguajes ms recientes controlan el uso de punteros y tienen un programa denominado recolector de basura que se encarga de limpiar la memoria no utilizada mejorando el desempeo. Imprimir el texto, pegarlo en la libreta y RESOLVER LAS SIGUIENTES PREGUNTAS: 1.- tipos de optimizaciones. 2.- a que se refiere el costo de las operaciones 3. que aplicaciones son las que ms tienen costo de ejecucin 3. como se reducen los costos de operacin 4. 2 herramientas para analizar el flujo de datos 5. definicin de lenguaje mquina 6.- que significa bajo nivel 7. ventajas ensamblador y desventajas del lenguaje

8.-cmo funcionan los ensambladores 9. en cuanto a compiladores y lenguajes de alto nivel cmo funciona el lenguaje ensamblador 10.- cuales son los tipos de registros de la memoria 11.- anota el significado y el uso de los siguientes registros: AX, BX, CX, DX

Tipos de Optimizaciones
Local Las optimizaciones globales Optimizaciones interprocedurales

A que se Refiere el costo de las Operaciones


El tiempo en que tarda en ejecutase la operacin

Que aplicaciones son las que ms tienen costo de ejecucin


Las aplicaciones multimedia como los videojuegos

Como se Reducen los Costos de Operacin


Instrucciones simples por ejemplo, reemplazando 5*x por 2*2*x+x: dos desplazamientos y una suma

2 Herramientas para analizar el flujo de datos


Depuradores Desensambladores

Definicin de lenguaje maquina


Es un lenguaje de programacin de bajo nivel es el que proporciona poca o ninguna abstraccin del microprocesador de un ordenador. Consecuentemente es fcilmente trasladado a lenguaje de mquina.

Que significa bajo nivel


Se refiere a la reducida abstraccin entre el lenguaje y el hardware.

Ventajas y Desventajas del lenguaje ensamblador


Ventaja es que se encarga de administrar de manera transparente para el usuario la creacin de memoria, las bifurcaciones y el paso de parmetros. Facilidades para crear macros, a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas Desventaja Es un lenguaje ms con el que escribir programas en los que la velocidad oTamao son crticos, o para explotar las caractersticas hardware que no tienen anlogos en lenguajes de alto nivel.

Cmo funcionan los ensambladores


Evita tediosos clculos y direccionamiento manual, despus de cada modificacin del programa.

En cuanto a compiladores y lenguajes de alto nivel cmo funciona el lenguaje ensamblador


Es el lenguaje de salida de los compiladores y un compilador traduce un programa de alto nivel en un programa equivalente en lenguaje maquina

Cules son los tipos de registros de la memoria


Registros de segmento Registros de apuntadores de instrucciones Registros apuntadores Registros de propsitos generales Registro ndice Registro de bandera.

Anota el significado y el uso de los siguientes registros: AX, BX, CX, DX


AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en las operaciones aritmticas y lgicas, despus de la operacin arroja un resultado. BX = Registro base, dividido en BH y BL.- Se utiliza en transferencias de datos entre la memoria y el procesador. CX = Registro contador, dividido en CH y CL.- Se utiliza como contador en bucles (LOOP), en operaciones con cadenas (REP), y en desplazamientos (CL). DX = Registro de datos, dividido en DH y DL.- Se utiliza en operaciones de multiplicacin y divisin junto con Ax y en operaciones de entrada y salida de puertos, su mitad inferior DL contiene el nmero de puertos.

You might also like