Documente Academic
Documente Profesional
Documente Cultură
INSTITUTO TECNOLGICO SUPERIOR DE JESS CARRANZA ING. EN SISTEMAS COMPUTACIONALES GRUPO 502-A MARCOS LPEZ PASCUAL
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
INDICE
INTRODUCCIN ........................................................................................................................ 3
8.1 LENGUAJE MQUINA. ......................................................................................................... 4 8.1.1 CARACTERSTICAS ....................................................................................................................... 7 8.1.2 DIRECCIONAMIENTO ................................................................................................................... 7
8.2 LENGUAJE ENSAMBLADOR .................................................................................................. 8 8.2.1 CARACTERSTICAS ....................................................................................................................... 9 8.2.2 ALMACENAMIENTO ..................................................................................................................... 9
CONCLUSIN .......................................................................................................................... 14
BIBLIOGRAFIA......................................................................................................................... 15
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
INTRODUCCIN
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
siguiente 011011001010010011110110.
forma:
Esta secuencia es fcilmente ejecutada por la computadora, pero es de difcil interpretacin, siendo aun mas difcil la interpretacin de un programa (conjunto de instrucciones) escrito de esta forma. Esta dificultad hace que los errores sean frecuentes y la correccin de los mismos costosa, cuando no imposible, al igual que la verificacin y modificacin de los programas. La anterior secuencia de dgitos binarios (bits) puede indicar a la computadora que: <<Traslade el contenido de la posicin de memoria X a la posicin de memoria Y.>> Si lo vemos escrito de esta forma, lo entenderemos fcilmente, ya que est en nuestro lenguaje natural, pero la mquina elemental ser incapaz de entender nada. Vemos, pues, que la forma de indicar a la mquina lo que debe hacer es totalmente diferente de la indicar a un ser humano lo mismo, por lo que deben emplearse sistemas de traduccin de una forma a otra. Ya se ha dicho que en un principio el programador empleaba directamente el lenguaje mquina. En este caso el traductor era el programador; pero vimos tambin los problemas que esto causaba. Con la prctica en el manejo de la mquina se cay en la cuenta de que se podra utilizar la propia mquina para ayudar en la traduccin de estos programas. Es decir, que si a una mquina elemental se le dotaba de un programa, tambin elemental, que tradujera un nmero determinado de caracteres de caracteres alfabticos en una secuencia de unos y ceros, se podra escribir un programa constituido por una secuencia de grupos de caracteres alfabticos, en la que cada uno de los grupos indicara una accin a realizar por el ordenador y, una vez escrito el programa, sera la propia mquina la que pasara los grupos de caracteres a bits. Las ventajas de esto son evidentes, ya que para el hombre resulta mas fcil manipular grupos de caracteres y la traduccin se hara de manera automtica. Por ejemplo, se podra escribir: TRASLADAR 11010110, 00011101. Esto indicara que el contenido de la posicin 11010110 haba que pasarlo a la posicin 00011101 si se sabe que al grupo alfabtico TRASLADAR le corresponde la secuencia de bits 11110101. La mquina traducira la anterior instruccin como:
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
11110101 11010110 00011101 Al grupo alfabtico se le denomina mnemotcnico, y existir un mnemotcnico por cada instruccin. Se le da este nombre porque sirve para recordar con mayor facilidad el conjunto de instrucciones de una determinada mquina. De esta forma aparecieron los lenguajes ensambladores (Assembler, en ingls). Poco a poco, con el avance de la programacin (Software), estas primeras y sencillas ayudas se fueron haciendo ms complejas, permitiendo que, adems de los mnemotcnicos correspondientes a la operacin a realizar, se pudieran emplear otros para indicar, por ejemplo, los operandos. La anterior instruccin se podra escribir de la siguiente forma: TRASLADAR POS-A POS-B Que nos resulta de ms fcil comprensin. Tambin se introdujo la posibilidad de indicar a la computadora la direccin de un salto en la secuencia de ejecucin de un programa mediante la utilizacin de etiquetas. A los programas que permiten pasar del programa escrito de esta manera (programa fuente, en ensamblador) al lenguaje mquina tambin se les denomina normalmente ensambladores. Estos traductores, como ya se ha dicho, se fueron complicando cada vez ms para que la labor del programador fuera ms fcil, incluyendo los denominados directivos del ensamblador, que son rdenes o informaciones que el programador da al traductor, no instrucciones de lenguaje mquina. Aun con todas estas sofisticaciones y ayudas, el programador de lenguaje ensamblador debe conocer perfectamente el sistema fsico (Hardware) de la mquina con que trabaja, pues aunque emplee mnemotcnicos, etiquetas, etc., stas sirven para indicar una posicin de memoria determinada, un registro o cualquier otra parte de la mquina. Por eso se dice que el lenguaje ensamblador es un lenguaje de bajo nivel, es decir, ligado con el <<hard>> concreto de una determinada mquina. Aqu radica la diferencia importante con los lenguajes ms complejos, llamados de alto nivel, como el Basic, Pascal, Cobol, etc., ya que en stos el programador no tiene porque reconocer el <<hard>> de la mquina. Trabaja con variables, constantes e instrucciones simblicas, y es el traductor quien las transforma en las direcciones apropiadas.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
8.1.1 Caractersticas
El lenguaje mquina realiza un conjunto de operaciones predeterminadas llamadas micro operaciones.
Las micro operaciones slo realizan operaciones del tipo aritmtica (+,-,*, /), lgicas (AND, OR, NOT) y de control (secuencial, decisin, repetitiva)
Caractersticas El lenguaje mquina es dependiente del tipo de arquitectura. As un programa mquina para una arquitectura intel x86 no se ejecutar en una arquitectura Power PC de IBM (al menos de manera nativa).
Algunos microprocesadores implementan ms funcionalidades llamado CISC, pero son ms lentos que los RISC ya que estos tienen registros ms grandes.
8.1.2 Direccionamiento
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. Direccionamiento 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 ladireccin 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 fi direccionamiento pasa a ser un variante de direccionamiento absoluto
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
8.2.1 Caractersticas
El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel. El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente. Los programas hechos, por un programador experto, en lenguaje ensamblador, son generalmente mucho ms rpidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan ms rpidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel. Tambin se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecucin.
8.2.2 Almacenamiento
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.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
8.3 REGISTROS
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.
Registros de uso general 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. Registros de segmento.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
Un registro de segmento se utiliza para alinear en un limite de prrafo o dicho de otra forma codifica la direccin de inicio de cada segmento y su direccin en un registro de segmento supone cuatro bits 0 a su derecha. Un registro de segmento tiene 16 bits de longitud y facilita un rea de memoria para direccionamientos conocidos como el segmento actual. Los registros de segmento son: CS (cdigo), DS (datos), SS (pila), ES , FS y GS. Registro Apuntador de instrucciones.(IP) El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de direccin de la siguiente instruccin que se ejecuta. Registro ndice. Los registros SI y DI estn disponibles para direccionamientos indexados y para sumas y restas. Que son las operaciones de punta. Registro de bandera. Los registros de banderas sirven parar indicar el estado actual de la maquina y el resultado del procesamiento, Cuando algunas instrucciones piden comparaciones o clculos aritmticos cambian el estado de las banderas.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
8.3.1 Distribucin
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 compilados se necesitan de las libreras, si son estticas 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
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.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
La administracin de memoria se refiere a los distintos mtodos y operaciones que se encargan de obtener la mxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible. Para poder lograrlo, la operacin principal que realiza es la de trasladar la informacin que deber ser ejecutada por el procesador, a la memoria principal. Actualmente esta administracin se conoce como Memoria Virtual ya que no es la memoria fsica del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria ms extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera ms eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario. Entre las principales operaciones que desarrolla la administracin de memoria se encuentran la reubicacin, que consiste en trasladar procesos activos dentro y fuera e la memoria principal para maximizar la utilizacin del procesador; la proteccin, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de cdigos y datos, con lo que el mecanismo de proteccin permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en comn.
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
CONCLUSIN
Programacion de Sistemas
UNIDAD VIII GENERACIN DE CDIGO OBJETO.
BIBLIOGRAFIA
http://arantxa.ii.uam.es/alfonsec/docs/compila5.html
http://serdis.dis.ulpgc.es/~a013775/asignaturas/itisi2/TI2/Apuntes%20del%20curso%202004-2005/An_lisis_sem_ntico-by_Ermis.pdf